对 INSERT 和 UPDATE 语句禁用 CHECK 约束

适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

可在 SQL Server 中使用 SQL Server Management Studio 或 Transact-SQL 禁用针对 INSERTUPDATE 事务的 CHECK 约束。 在禁用该 CHECK 约束后,在将来插入或更新列时,将不会根据约束条件进行验证。 如果您知道新数据将与现有约束冲突或者如果约束仅适用于数据库中已有的数据,则可选择此选项。

有关详细信息,请参阅 CHECK 约束

注意

使用 ALTER TABLE 语句启用和禁用 CHECK 约束,该语句始终需要架构修改锁 (Sch-M)。 Sch-M 锁可阻止对表的并发访问。 有关详细信息,请参阅锁定和 ALTER TABLE

权限

需要对表的 ALTER 权限。

使用 SQL Server Management Studio

为 INSERT 和 UPDATE 语句禁用 CHECK 约束

  1. “对象资源管理器”中,展开具有约束的表,再展开 “约束” 文件夹。

  2. 右键单击该约束,再选择“修改”

  3. “表设计器”下的网格中,单击 “强制用于 INSERT 和 UPDATE” ,然后从下拉菜单中选择 “否”

  4. 单击“关闭”。

使用 Transact-SQL

为 INSERT 和 UPDATE 语句禁用 CHECK 约束

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

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

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

    USE AdventureWorks2022;  
    GO  
    ALTER TABLE Purchasing.PurchaseOrderHeader  
    NOCHECK CONSTRAINT CK_PurchaseOrderHeader_Freight;   
    GO