Leb*_*n11 5 sql sql-server ssms
所以这里我有一张桌子:
我想要的是在上面的设计器模式中为列 SessionState 添加一个检查约束,以便它可以像枚举一样工作。但不幸的是,我找不到可以做到这一点的地方。
我也试过“ right click -> script table as-> create table”,但在这里我无法进行非空检查:
右键单击SessionState并选择Check Constraints...
然后添加约束。
或者 选择dbo.Table > Constraints > New Constraints... > Expression (under General)然后输入您的表达式。
([SessionState]='Unknown' OR [SessionState]='Useless' OR [SessionState]='Useful')
Run Code Online (Sandbox Code Playgroud)

Img 全尺寸:https://i.stack.imgur.com/AvgJX.png

Img 全尺寸:https://i.stack.imgur.com/HMsEK.png
或者只需输入此代码
Alter Table TableName
ADD CONSTRAINT Constraint_name Check (SessionState IN ('Useful', 'Useless', 'Unknown'))
Run Code Online (Sandbox Code Playgroud)
更新
(备份所有数据)
运行此查询并获取所有空值和不支持的值。然后,更改它们(更改SessionState值)。
Select * from [Session] WHERE SessionState IS NULL OR SessionState NOT IN ('Useful', 'Useless', 'Unknown')
Run Code Online (Sandbox Code Playgroud)
要更改,请使用此查询...
UPDATE [Session] SET SessionState='Unknown' WHERE SessionState IS NULL
UPDATE [Session] SET SessionState='Unknown' WHERE SessionState NOT IN ('Useful', 'Useless', 'Unknown')
Run Code Online (Sandbox Code Playgroud)
更改值后再次执行第一步。
然后运行这些查询...
Alter Table Session
ALTER COLUMN SessionState nchar(40) NOT NULL
Alter Table Session
ADD CONSTRAINT Constraint_name Check (SessionState IN ('Useful', 'Useless', 'Unknown'))
Run Code Online (Sandbox Code Playgroud)
演示: http: //rextester.com/TGW65894
有关更多信息,请参阅此视频:https://youtu.be/9Zj5ODhv0b0