所以我在这里有一张桌子:
我想要的是在上面的设计器模式中为SessionState列添加一个检查约束,以便它可以像枚举一样工作。但不幸的是,我无法找到能够做到这一点的地方。
我也试过了#34; right click -> script table as-> create table
"但在这里,我无法进行无效检查:
答案 0 :(得分:1)
右键点击SessionState
并选择Check Constraints...
然后添加约束。
或选择dbo.Table > Constraints > New Constraints... > Expression (under General)
,然后输入您的表达。
([SessionState]='Unknown' OR [SessionState]='Useless' OR [SessionState]='Useful')
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'))
<强>更新强>
(备份所有数据)
运行此查询并获取所有null&amp;不支持的值。
然后,更改它们(更改SessionState
值)。
Select * from [Session] WHERE SessionState IS NULL OR SessionState NOT IN ('Useful', 'Useless', 'Unknown')
要进行更改,请使用此查询...
UPDATE [Session] SET SessionState='Unknown' WHERE SessionState IS NULL
UPDATE [Session] SET SessionState='Unknown' WHERE SessionState NOT IN ('Useful', 'Useless', 'Unknown')
更改值后再次执行第一步。
然后运行这些查询...
Alter Table Session
ALTER COLUMN SessionState nchar(40) NOT NULL
Alter Table Session
ADD CONSTRAINT Constraint_name Check (SessionState IN ('Useful', 'Useless', 'Unknown'))
演示:http://rextester.com/TGW65894
有关其他信息,请参阅此视频:https://youtu.be/9Zj5ODhv0b0