创建 CHECK 约束

可以使用 SQL Server Management Studio 或 Transact-SQL 在表中创建检查约束,以指定 SQL Server 2014 中的一列或多列中可接受的数据值。

本主题内容

开始之前

安全性

权限

需要具有表的 ALTER 权限。

使用 SQL Server Management Studio

创建新的 CHECK 约束

  1. “对象资源管理器”中,展开要为其添加 CHECK 约束的表,右键单击“约束”,然后单击“新建约束”。

  2. 在“CHECK 约束”对话框中,单击“表达式”字段,然后单击省略号 (…)

  3. “CHECK 约束表达式” 对话框中,键入 CHECK 约束的 SQL 表达式。 例如,若要将 SellEndDate 表的 Product 列中的条目限制为大于等于 SellStartDate 列中的日期的值,或者为 NULL 值,则键入:

    SellEndDate >= SellStartDate OR SellEndDate IS NULL  
    

    或者,如果要求 zip 列中的项为 5 位数,请键入:

    zip LIKE '[0-9][0-9][0-9][0-9][0-9]'  
    

    注意

    确保将任何非数字约束值包含在单引号 (') 中。

  4. 单击“确定”。

  5. “标识”类别中,您可以更改 CHECK 约束的名称并且为该约束添加说明(扩展属性)。

  6. “表设计器” 类别中,您可以设置何时强制约束。

    更改为: 在以下字段中选择“是”:
    对在创建约束前存在的数据测试约束 在创建或启用时检查现有数据
    在此表上发生复制操作时强制约束 强制用于复制
    在此表中插入或更新行时强制约束 强制用于 INSERT 和 UPDATE
  7. 单击“关闭”。

“使用 Transact-SQL”

创建新的 CHECK 约束

  1. “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准菜单栏上,单击 “新建查询”

  3. 将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。

    ALTER TABLE dbo.DocExc   
       ADD ColumnD int NULL   
       CONSTRAINT CHK_ColumnD_DocExc   
       CHECK (ColumnD > 10 AND ColumnD < 50);  
    GO  
    -- Adding values that will pass the check constraint  
    INSERT INTO dbo.DocExc (ColumnD) VALUES (49);  
    GO  
    -- Adding values that will fail the check constraint  
    INSERT INTO dbo.DocExc (ColumnD) VALUES (55);  
    GO  
    
    

有关详细信息,请参阅 ALTER TABLE (Transact-SQL)