Nir*_*ole 6 sql sql-server alter-table
我正在设计下面列的用户注册表.
CREATE TABLE [dbo].[NCT_UserRegistration]
(
[User_Id] [int] IDENTITY(1,1) NOT NULL,
[User_EmailId] [varchar](255) NULL,
[User_Password] [varchar](512) NULL,
[User_Name] [varchar](255) NULL,
[User_MobileNum] [varchar](20) NULL,
[User_Status] [varchar](15) NULL,
[User_Role] [varchar](20) NULL,
[User_CreatedDate] [timestamp] NULL,
[User_UpdatedDate] [datetime] NULL,
[Name] [varchar](30) NULL
)
Run Code Online (Sandbox Code Playgroud)
我对地位和角色的要求如下.
status VARCHAR(15) 指数,已启用的枚举,已禁用.role VARCHAR(20) SUPER_ADMIN和PROJECT_ADMIN的枚举我从上面所理解的是状态应该只与角色相同Enabled或Disabled相同.如何设计我的表以确保它只需要这两个值?也有任何方式,例如,如果我提供1然后它是ENABLED和0为DISABLED.
我可以在这里得到一些想法吗?任何帮助,将不胜感激.谢谢
您需要使用CHECK CONSTRAINT来限制特定值
CREATE TABLE [dbo].[NCT_UserRegistration](
[User_Id] [int] IDENTITY(1,1) NOT NULL,
[User_EmailId] [varchar](255) NULL,
[User_Password] [varchar](512) NULL,
[User_Name] [varchar](255) NULL,
[User_MobileNum] [varchar](20) NULL,
[User_Status] [varchar](15) NULL CONSTRAINT chk_Status CHECK ([User_Status] IN ('ENABLED', 'DISABLED')),
[User_Role] [varchar](20) NULL CONSTRAINT chk_Role CHECK ([User_Role] IN ('SUPER_ADMIN','DISABLED')),
[User_CreatedDate] [timestamp] NULL,
[User_UpdatedDate] [datetime] NULL,
[Name] [varchar](30) NULL
)
Run Code Online (Sandbox Code Playgroud)
对于枚举,您必须在前端处理或在从表中重新执行值时处理,这是一个额外的步骤.
SELECT CASE WHEN [User_Status] = 1 THEN 'ENABLED' WHEN [User_Status] = 0 THEN 'DISABLED' END As UserStratus
FROM [dbo].[NCT_UserRegistration]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3229 次 |
| 最近记录: |