CASCADE Delete はトランザクションとして実行されますか?
質問
データベース内のいくつかのテーブルに対してカスケード削除を実行したいのですが、何かの削除時に失敗した場合に何が起こるかに興味があります。すべてがロールバックされますか?
解決
一般に¹、はい、カスケード削除は、元の削除と同じトランザクション (またはサブトランザクション) で実行されます。ただし、SQL サーバーのドキュメントを読む必要があります。
¹ 例外は、MyISAM テーブルを備えた MySQL など、トランザクションをサポートしていないデータベースを使用している場合です。
他のヒント
カスケード削除は確かにアトミックであり、そのプロパティがなければほとんど役に立ちません。ドキュメントに記載されています。
それは指摘する価値がある どれでも カスケード イベントはアトミックである必要があります (つまり、トランザクション内で)。ただし、Joel Coehoorn 氏が指摘しているように、データベースのドキュメントを確認してください。
所属していません StackOverflow