【とらんざくしょん】
トランザクション とは?
最終更新:
💡 「全部成功か、全部なかったことに」のひとまとめ処理
データベースの一連の操作をひとまとまりにし、まとめて確定したり取り消したりする仕組み。途中だけ更新された状態を残さないために使う。取り消せる範囲は、そのトランザクション内のDB操作だ。
📌 このページのポイント
トランザクションって何?
たとえば口座Aから口座Bへ100を振り込むとき、Aを100減らす更新とBを100増やす更新を1つにまとめるよ。片方だけが確定すると困るので、両方をまとめて確定する単位にするんだ。
途中でやめたいときは?
PostgreSQLならBEGINで始め、COMMITで確定する。確定前にROLLBACKすれば、そのトランザクションの更新を取り消せるよ。エラー後の扱いや自動コミットはDBやライブラリによるので、複数操作が同じ単位に入っているか確認しよう。
コミット前の変更は誰にも見えない?
実行中のトランザクション自身は、自分が更新した内容を読むことがあるよ。他の処理から何が見えるかは分離レベルとDBの実装に依存する。PostgreSQLでは未確定の更新を他のトランザクションが読むダーティリードは起きないけれど、すべての競合が防げるわけではないんだ。
ACIDならデータは必ず正しくなる?
メールや現金の排出も元に戻る?
まとめ:ざっくりこれだけ覚えればOK!
「トランザクション」って出てきたら「全部まとめて成功か全部取り消しか、という一連の処理のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「transaction」 = 取引・処理
💬 ビジネス用語の「取引」と同じ単語。銀行の「振込取引」がデータベースでも同じ概念で使われていると覚えよう