Sql server 即使在禁用外键后也会发生级联删除

Sql server 即使在禁用外键后也会发生级联删除,sql-server,sql-delete,Sql Server,Sql Delete,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 ,即

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上的所有触发器

除非这是问题的答案,否则请将其删除并编辑到您的问题中。也许有人应该回顾过去的决策,以了解为什么在触发器中复制该逻辑时实施级联FK?