0

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

4

3 回答 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 语句禁用外键约束

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

或者简单地使用这个命令:

ALTER TABLE tablename
NOCHECK CONSTRAINT fk_ConstraintName
于 2013-11-06T19:34:47.910 回答