【问题标题】:Cascade delete happening even after foreign keys disabled即使在禁用外键后也会发生级联删除
【发布时间】:2021-05-19 08:26:49
【问题描述】:

在 MS SQL 服务器中存在与 on delete cascade 相关的外键约束。

出于维护目的,我们要删除主键表P中的记录,而不删除外键表F中的记录。

所以,禁用外键如下:

ALTER TABLE F NOCHECK CONSTRAINT constraint_name

用语句验证外键被禁用

select * from sys.foreign_keys where is_disabled=1 and name=constraint_name

当我跑步时,

delete from P

,即使禁用了外键约束,F 中的记录也会被删除。我在 Postgres 和 Oracle 中尝试过,但无法重现此行为。

如何在不进行级联删除的情况下删除记录?

【问题讨论】:

  • 也许有人应该重新审视过去的决定,以了解您为什么在触发器中复制该逻辑时实现了级联 FK?

标签: sql-server sql-delete


【解决方案1】:

除了上述之外,我们还得执行:

在 F 上禁用全部触发

【讨论】:

  • 除非这是对问题的回答,否则请将其删除并编辑到您的问题中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多