我在MSDN杂志中看到过这个。我想临时禁用外键,我可以使用以下代码吗...不需要删除但是暂时禁用因为我想再次启用
ALTER TABLE Orders
NOCHECK CONSTRAINT
FK_Orders_Customers
答案 0 :(得分:3)
- 禁用约束。
ALTER TABLE Orders NOCHECK CONSTRAINT FK_Orders_Customers
- 启用约束。
ALTER TABLE Orders WITH CHECK CHECK CONSTRAINT FK_Orders_Customers
答案 1 :(得分: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