我刚刚发现了一个 SQL Server 错误(在此处描述)。现在我想知道,是否有可能在INSERT
不执行外键检查的情况下强制声明?就像在服务器范围内禁用此检查几分钟,或者以某种方式禁用(而不是删除)特定表上的 FK?
问问题
156 次
3 回答
4
ALTER TABLE [schema].[table] NOCHECK CONSTRAINT [constraint_name]
然后
ALTER TABLE [schema].[table] CHECK CONSTRAINT [constraint_name]
但是,这会导致您的 FK 不受信任,并且当您重新启用约束时,需要时间来重新验证它。
于 2013-11-06T19:34:25.167 回答
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
于 2013-11-06T19:33:08.733 回答
3
检查使用 INSERT 和 UPDATE 语句禁用外键约束:
- 禁用 INSERT 和 UPDATE 语句的外键约束
- 在对象资源管理器中,展开包含约束的表,然后展开 Keys 文件夹。
- 右键单击约束并选择修改。
- 在表设计器下的网格中,单击强制外键约束并从下拉菜单中选择否。
- 单击关闭。
或者简单地使用这个命令:
ALTER TABLE tablename
NOCHECK CONSTRAINT fk_ConstraintName
于 2013-11-06T19:34:47.910 回答