有没有办法强制SQL INSERT或禁用外键检查?

时间:2013-11-06 19:29:58

标签: sql sql-server

我刚发现了一个SQL Server错误(描述为here)。现在我想知道,如果有可能在不执行外键检查的情况下强制INSERT语句?就像禁用此服务器在服务器范围内检查几分钟,或以某种方式禁用(不删除)特定表上的FK?

3 个答案:

答案 0 :(得分:4)

ALTER TABLE [schema].[table] NOCHECK CONSTRAINT [constraint_name]

然后

ALTER TABLE [schema].[table] CHECK CONSTRAINT [constraint_name]

但是,这会导致您的FK不受信任,并且当您重新启用约束时,重新验证它需要时间。

答案 1 :(得分:3)

放弃约束

ALTER TABLE Table_Name
DROP CONSTRAINT fk_ConstraintName

完成操作后删除约束,然后再次创建。

禁用约束

ALTER TABLE MyTable 
NOCHECK CONSTRAINT fk_Constraint_Name

启用约束

ALTER TABLE MyTable 
CHECK CONSTRAINT fk_Constraint_Name

答案 2 :(得分:3)

检查 Disable Foreign Key Constraints with INSERT and UPDATE Statements

  
      
  1. 禁用INSERT和UPDATE语句的外键约束
  2.   
  3. 在对象资源管理器中,使用约束展开表,然后   展开Keys文件夹。
  4.   
  5. 右键单击约束并选择“修改”。
  6.   
  7. 在表设计器下的网格中,单击“强制外键”   约束并从下拉菜单中选择否。
  8.   
  9. 点击关闭。
  10.   

或简单使用此命令:

ALTER TABLE tablename
NOCHECK CONSTRAINT fk_ConstraintName