2012-06-21 52 views
0

只见thisone在MSDN magazine.i想临时禁用Foreignkeys,我所能做的使用下面的代码... ...而不是需要删除,但暂时禁用,因为我想再次临时禁用外键?

ALTER TABLE Orders 
NOCHECK CONSTRAINT 
    FK_Orders_Customers 

回答

3

启用 - 禁用约束。

ALTER TABLE Orders NOCHECK CONSTRAINT FK_Orders_Customers 

- 重新启用约束。

ALTER TABLE Orders WITH CHECK CHECK CONSTRAINT FK_Orders_Customers 
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