创建检查约束

本主题介绍如何在表上创建检查约束。

选择 help check constraint 的“属性”选项。在其“常规”选项卡中,将显示“检查约束”文本区域。可通过右键单击以调用选项编辑器,来自定义该区域的格式设置。这些设置是通用的;在一个文本区域中设定这些设置后,将以相同的方式显示所有文本区域。选项编辑器中的选项卡包括:

Steps创建表检查约束

  1. 在表中,选择“检查约束”文件夹。

  2. 选择“文件”|“新建”|“检查约束”。

  3. 将打开“新建检查约束属性”对话框。

  4. 输入约束的名称。

  5. 在“检查约束”框中,输入约束的文本。检查约束文本指定在将任何值插入表之前该值必须满足的搜索条件。

  6. 通过选择“列”按钮以显示列列表对话框,还可以选择要包含在检查约束文本中的列。

  7. 单击“应用”。

快捷方式

选择“检查约束”文件夹。在右窗格中,双击“添加检查约束”图标。

该对话框列出可在检查约束定义中使用的列。

可声明检查约束来限制用户在表列中插入的值。检查约束对于检查有限的具体值域的应用程序非常有用。检查约束指定在将任何值插入表之前该值必须满足的 search_conditionsearch_condition 可包括:

表达式可包括算术运算符和 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 

对话框将显示表中包含的列的列表。可以选择需要包含在检查约束定义中的列。