【发布时间】: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