4

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

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

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

我也不能使用 INSTEAD OF 触发器,因为 TableA 本身具有 CASCADE 外键关系。

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

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

4

1 回答 1

0

您可以更改阻止您将其添加为的其他约束ON DELETE CASCADE吗?

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

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

于 2012-02-06T00:10:25.730 回答