如何解决即使在禁用外键后也会发生级联删除
在 MS sql Server 中存在一个带有 on delete 级联的外键约束。
出于维护目的,我们希望删除主键表 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 中尝试过,但无法重现此行为。
解决方法
除了上述之外,我们还必须执行:
在 F 上禁用所有触发器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。