0

我在 MSDN 杂志上看到了这个。我想暂时禁用外键,我可以使用以下代码吗。不需要删除但暂时禁用,因为我想再次启用

ALTER TABLE Orders
NOCHECK CONSTRAINT 
    FK_Orders_Customers
4

2 回答 2

3

-- 禁用约束。

ALTER TABLE Orders NOCHECK CONSTRAINT FK_Orders_Customers

-- 重新启用约束。

ALTER TABLE Orders WITH CHECK CHECK CONSTRAINT FK_Orders_Customers
于 2012-06-21T06:29:05.150 回答
3

是的,正如您所怀疑的那样,ALTER TABLE [table] CHECK / NOCHECK CONSTRAINT *FK_Name*启用和禁用外键约束检查。它还证明了为什么明确命名约束是一个好主意,即避免使用FK__TABLE__A2A64E930CBAE877.

需要注意的一点是,在使用禁用的外键约束插入/更改数据之后,如果您只是使用 CHECK CONSTRAINT 启用它,SQL 将不会信任您的约束。您需要执行以下操作以使 SQL 在重新启用期间重新检查约束:

ALTER TABLE [table] WITH CHECK CHECK CONSTRAINT *FK_Name*

您可以检查违规行为

DBCC CHECKCONSTRAINTS ([table])

参考: http: //msdn.microsoft.com/en-us/library/ms177456 (v=sql.90).aspx(禁用约束),另请参阅http://geekswithblogs.net/dturner/archive/2011/01 /31/sql-constraints-check-and-nocheck.aspx

于 2012-06-21T06:29:42.850 回答