我在哪里可以在SSMS表设计器模式中设置检查约束

时间:2018-04-28 18:01:57

标签: sql sql-server ssms

所以我在这里有一张桌子:

enter image description here

我想要的是在上面的设计器模式中为SessionState列添加一个检查约束,以便它可以像枚举一样工作。但不幸的是,我无法找到能够做到这一点的地方。

我也试过了#34; right click -> script table as-> create table"但在这里,我无法进行无效检查:

enter image description here

1 个答案:

答案 0 :(得分:1)

右键点击SessionState并选择Check Constraints...
然后添加约束。

enter image description here

或选择dbo.Table > Constraints > New Constraints... > Expression (under General),然后输入您的表达。

([SessionState]='Unknown' OR [SessionState]='Useless' OR [SessionState]='Useful')

enter image description here
Img全尺寸:https://i.stack.imgur.com/AvgJX.png

enter image description here
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