前面的示例演示了向表加入新约束的时候使用NOCHECK忽略违反新的约束规则的既有值。约束用于维持数据的完整性,但是有的时候你可能会需要取消这个规则来进行一些一次性的数据导入工作或非标准的业务操作。NOCHECK还能用来禁止CHECK或FOREIGN KEY约束,允许你插入违反约束规则的行。
USE AdventureWorks
GO
INSERT Sales.PersonCreditCard
(BusinessEntityID,CreditCardID)
VALUES (14425,924533)
消息547,级别16.状态0.第1行
INSERT语句与FOREIGN KEY约束’FK_PersonCreditCard_'CreditCard_CredttCardID'冲突.
该冲突发生于数据库‘AdventureWorks‘,表’sales .CreditCa rd‘,列'CreditCardlD’,
语句已终止.
禁止约束:
ALTER TABLE Sales.PersonCreditCard
NOCHECK CONSTRAINT FK_PersonCreditCard_CreditCard_CreditCardID
再次执行上面的插入就能成功插入了。
重新启用约束
ALTER TABLE Sales.PersonCreditCard
CHECK CONSTRAINT FK_PersonCreditCard_CreditCard_CreditCardID
--禁用所有约束
ALTER TABLE Sales.PersonCreditCard
NOCHECK CONSTRAINT ALL
--启用所有约束
ALTER TABLE Sales.PersonCreditCard
CHECK CONSTRAINT ALL