如何在SSMS表设计器中设置检查约束?含SessionState列枚举约束需求
解决SSMS中SessionState列的枚举检查约束与非空设置问题
嘿,我来帮你搞定这两个困扰你的问题!
一、在表设计器中添加枚举型检查约束
很多人第一次用表设计器找检查约束都会懵,其实它藏在属性窗口里:
- 打开目标表的表设计器,选中
SessionState列。 - 按下
F4键打开「属性」窗口(或者右键表设计器空白处,选择「属性」)。 - 在属性窗口里找到「Check Constraints」选项,点击右侧的省略号按钮(...)。
- 在弹出的窗口中点击「添加」,然后在「Expression」输入框里填写你的枚举规则,比如:
([SessionState] IN ('Active', 'Inactive', 'Expired')) - 可以给约束起个清晰的名字(比如
CK_SessionState_ValidStatus),方便后续维护。 - 最后保存表,约束就生效了。
另外,表设计器里设置非空超简单:直接在列的「允许空」列取消勾选就行,不用绕到脚本里。
二、用脚本方式同时设置非空与检查约束
如果你习惯用脚本操作,不管是修改现有表还是新建表,都可以直接写SQL实现:
修改现有表
-- 第一步:设置SessionState列为非空(如果之前允许为空) ALTER TABLE 你的表名 ALTER COLUMN SessionState VARCHAR(20) NOT NULL; -- 替换成你列的实际数据类型 -- 第二步:添加枚举检查约束 ALTER TABLE 你的表名 ADD CONSTRAINT CK_SessionState_ValidValues CHECK ([SessionState] IN ('Active', 'Inactive', 'Expired'));
新建表时直接配置
CREATE TABLE 你的表名 ( -- 其他列定义... SessionState VARCHAR(20) NOT NULL CHECK ([SessionState] IN ('Active', 'Inactive', 'Expired')), -- 其他列定义... );
这样就能同时搞定非空和枚举约束啦!
内容的提问来源于stack exchange,提问作者Lebron11
相关产品推荐
相关产品推荐

