我刚发现了一个SQL Server错误(描述为here)。现在我想知道,如果有可能在不执行外键检查的情况下强制INSERT
语句?就像禁用此服务器在服务器范围内检查几分钟,或以某种方式禁用(不删除)特定表上的FK?
答案 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 :
- 禁用INSERT和UPDATE语句的外键约束
- 在对象资源管理器中,使用约束展开表,然后 展开Keys文件夹。
- 右键单击约束并选择“修改”。
- 在表设计器下的网格中,单击“强制外键” 约束并从下拉菜单中选择否。
- 点击关闭。
醇>
或简单使用此命令:
ALTER TABLE tablename
NOCHECK CONSTRAINT fk_ConstraintName