创建检查约束

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

本主题内容

在您开始之前

安全

权限

需要对表具有 ALTER 权限。

使用 SQL Server Management Studio

创建新的检查约束

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

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

  3. “CHECK 约束表达式” 对话框中,键入 CHECK 约束的 SQL 表达式。 例如,若要将表中的Product条目SellEndDate限制为大于或等于列中日期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

创建新的检查约束

  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)