我有一个表(TableB)与父表(TableA)有外键关系。
当我删除表A中的记录时,我希望通过删除TableB中引用TableA中已删除记录的所有记录来保留参照完整性。
通常我会删除CASCADE。但是,由于表结构和针对SQL Server中多个级联路径的过度保护安全措施,这对于此特定关系是不可能的。
我也不能使用INSTEAD OF触发器,因为TableA本身上有一个CASCADE外键关系。
我正在考虑做的是将TableA和TableB之间的关系更改为ON DELETE SET NULL,然后创建一个AFTER触发器来清理TableB中的NULL记录。
有没有更好的方法来处理这种情况?
答案 0 :(得分:0)
您是否可以更改阻止您将其添加为ON DELETE CASCADE
的其他约束?
您可以添加DeleteMe
列,然后发出UPDATE A SET DeleteMe = 1
,然后使用after触发器先删除表B行,然后再将所请求的表A行删除?
你能以某种方式分割或合并表(垂直,即),以分隔它们相互排斥的依赖关系吗?