我在为这种可预见的情况制定解决方案时遇到了一些麻烦。
TableA 对 TableB 有一个 FK。TableC 对 TableA 有一个 FK。TableC 对 TableD 有一个 FK。
TableA
------
taId
tbId
TableB
------
tbId
TableC
------
tcId
taId
tdId
TableD
------
tdId
一系列简短的事件:
如何确保在将相关记录还原到 TableB 中的已还原记录(即 TableA 和 TableC 中)时,我不会还原任何依赖于第 2 步 TableD 中的记录的内容——此外,在不还原部分的情况下它依赖于表 D 中的记录,我以级联方式限制恢复(即,如果发现 TableC 与软删除的记录有关系,则不恢复 TableA)?
我考虑的是利用表格中的时间设计以及 GUID。每个表将具有(除了软删除标志)一个 DateDeleted 字段和一个 GUID 字段(其中相同的 GUID 将分配给级联软删除中的每个节点以区分级联集)。这将使恢复级联集变得非常容易,因为它们将共享日期和 GUID。但是我遇到的问题,也就是上面概述的问题,是如何处理软删除记录将从不同的级联中删除的情况。