この予見された状況の解決策を策定するのに苦労しています。
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 のレコードに依存していた場合、カスケード方式で復元を制限します (つまり、テーブル C がソフト削除されたレコードと関係があることが判明した場合、テーブル A は復元されません)。
私が検討したのは、GUID と共にテーブルの一時的な設計を活用することです。各テーブルには、(論理的な削除フラグを除いて) DateDeleted フィールドと GUID フィールド (カスケードのセットを区別するために、カスケードの論理的な削除の各ノードに同じ GUID が割り当てられます) があります。これにより、日付と GUID が共有されるため、カスケード セットを簡単に復元できます。しかし、私が遭遇した問題は、上記で概説したものであり、ソフト削除されたレコードが別のカスケードから削除された状況をどのように処理するかということでした.