CASCADE Delete はトランザクションとして実行されますか?

StackOverflow https://stackoverflow.com/questions/114163

  •  02-07-2019
  •  | 
  •  

質問

データベース内のいくつかのテーブルに対してカスケード削除を実行したいのですが、何かの削除時に失敗した場合に何が起こるかに興味があります。すべてがロールバックされますか?

役に立ちましたか?

解決

一般に¹、はい、カスケード削除は、元の削除と同じトランザクション (またはサブトランザクション) で実行されます。ただし、SQL サーバーのドキュメントを読む必要があります。

¹ 例外は、MyISAM テーブルを備えた MySQL など、トランザクションをサポートしていないデータベースを使用している場合です。

他のヒント

カスケード削除は確かにアトミックであり、そのプロパティがなければほとんど役に立ちません。ドキュメントに記載されています。

それは指摘する価値がある どれでも カスケード イベントはアトミックである必要があります (つまり、トランザクション内で)。ただし、Joel Coehoorn 氏が指摘しているように、データベースのドキュメントを確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top