複数のカスケードパスを使用できないのはなぜですか?


9

複数のカスケードパスについて多くの質問が出されていることがわかります。例えば:

/programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths

/programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1

/programming/27613117/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths-s

ただし、私が見て理解していることから、関連するマスターレコードの削除の1つの条件だけでなく、多くの子レコードを削除することはまったく問題ありません。

質問では、SQL Serverがこれを防止して安全を確保しようとしていると言われていますが、複数のカスケードパスがある場合に何が問題になるのか、安全にするためにどのような問題が発生しないのかはわかりません。

誰かが私に分かりやすく簡単な言葉で、できれば複数のカスケードパスの場合に問題が発生する可能性のある例を使用して説明できることを願っています。

回答:


6

この「何がうまくいかないのか」という質問には、MicrosoftまたはSybaseの開発者しか回答できません。同じレコードへのカスケードパスが複数ある場合、コードがそれを複数回削除しようとする可能性があります。削除するレコードがすでに削除されている可能性に対処するように構築されてない場合、エラーがスローされる可能性があります。どうやらこの問題は実際に存在する(または存在すると考えられている)ので、修正する代わりに、実装は重複したカスケードパスの定義を防ぐことでそれを回避します。他のDBMSはこの状況で問題がないため、これは明らかにショートカットです。


2
SQL Serverの20年後、彼らはこの問題の修正に
取り掛かると思い
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.