本主题介绍如何在表上创建检查约束。
选择 help check constraint 的“属性”选项。在其“常规”选项卡中,将显示“检查约束”文本区域。可通过右键单击以调用选项编辑器,来自定义该区域的格式设置。这些设置是通用的;在一个文本区域中设定这些设置后,将以相同的方式显示所有文本区域。选项编辑器中的选项卡包括:
“编辑器”选项卡 指定“检查约束”区域中的滚动条。其中的选项有:
垂直 — 缺省情况下不选择
水平 — 缺省情况下选择
“格式”选项卡 用于更改文本区域中显示的语法的字体大小和颜色。可以更改的元素有:
文本选择
文本
关键字
注释
形式注释
数字
字符串
开放字符串
运算符
标点符号
断点边距
HTML 元素名
HTML 属性名
HTML 属性值
HTML 注释
HTML 标记分隔符
HTML 运算符
创建表检查约束
在表中,选择“检查约束”文件夹。
选择“文件”|“新建”|“检查约束”。
将打开“新建检查约束属性”对话框。
输入约束的名称。
在“检查约束”框中,输入约束的文本。检查约束文本指定在将任何值插入表之前该值必须满足的搜索条件。
通过选择“列”按钮以显示列列表对话框,还可以选择要包含在检查约束文本中的列。
单击“应用”。
选择“检查约束”文件夹。在右窗格中,双击“添加检查约束”图标。
该对话框列出可在检查约束定义中使用的列。
可声明检查约束来限制用户在表列中插入的值。检查约束对于检查有限的具体值域的应用程序非常有用。检查约束指定在将任何值插入表之前该值必须满足的 search_condition。search_condition 可包括:
使用 in 引入的一组常量表达式。
使用 between 引入的一定范围的常量表达式。
由 like 引入的一组条件,可以包含通配符。
表达式可包括算术运算符和 Transact-SQL 内置函数。search_condition 不能包含子查询、集合函数说明或目标说明。
例如,此语句确保只能将某些特定的值输入 pub_id 列中:
create table my_new_publishers
(pub_id char(4)
check (pub_id in ("1389", "0736", "0877",
"1622", "1756")
or pub_id like "99[0-9][0-9]"),
pub_name varchar(40),
city varchar(20),
state char(2))
列级检查约束只能引用定义约束的列,而不能引用表中的其它列。表级检查约束可参照表中任意列。create table 允许列定义中有多个检查约束。
因为检查约束不替代列定义,所以,如果列定义允许空值,就不能使用检查约束来禁止空值。如果对允许空值的列声明检查约束,那么即使 search_condition 中不包含空值,也可以在列中显式或隐式地插入空值。例如,假定对允许空值的表列定义下列检查约束:
check (pub_id in ("1389", "0736", "0877", "1622", "1756"))
您仍可将空值插入该列。因为下列表达式始终判断为真,所以列定义替代检查约束:
col_name != null
对话框将显示表中包含的列的列表。可以选择需要包含在检查约束定义中的列。