SQL Server-在不使用CASCADE和INSTEAD OF触发器的情况下保持引用完整性



我有一个表(TableB),它与父表(TableA)有外键关系。

当我删除表a中的记录时,我希望通过删除表B中引用表a中已删除记录的所有记录来保持引用完整性。

通常我会删除级联。但是,由于SQL Server中的表结构和对多个级联路径的过度保护,这对于这种特定关系是不可能的。

我也不能使用INSTEAD OF触发器,因为TableA本身有一个级联外键关系。

我想做的是将TableA和TableB之间的关系更改为ON DELETE SET NULL,然后创建一个AFTER触发器来清理TableB中的NULL记录。

有没有更好的方法来处理这种情况?

您能否更改阻止将此约束添加为ON DELETE CASCADE的其他约束?

您可以添加一个DeleteMe列,然后发出UPDATE A SET DeleteMe = 1,然后使用after触发器先删除表B的行,然后删除请求的表a的行吗?

您是否可以以某种方式拆分或合并表(垂直),以分离它们互斥的依赖关系?

相关内容

最新更新