トランザクションとは、複数の処理を1つのまとまりとして扱う考え方です。たとえば銀行振込では、「お金を引く」「相手に足す」という2つの処理がセットです。片方だけ成功すると困るので、全部成功したときだけ確定し、失敗したら元に戻します。この記事では、その理由と使い方を、仕事で役立つ目線でやさしく整理します。
トランザクションとは、まず何を指すのか
データベースでは、1回の処理でいくつもの表や行が変わることがあります。そこで「この処理の集まりは、途中で切らずに1セットとして扱おう」と決める仕組みがトランザクションです。
大事なのは、全部成功するか、全部なかったことにするかのどちらかにそろえることです。これにより、データが半端な状態で残るのを防げます。
このときによく出る言葉が commit と rollback です。commit は「ここまでの変更を確定する」、rollback は「失敗したので元に戻す」という意味です。
つまりトランザクションは、データベースの処理に「やり直しできる安全網」をつける仕組みだと考えるとわかりやすいです。
よくある疑問:SQLを1文ずつ実行すれば、わざわざトランザクションを使わなくてもよさそうですが、違うんですか?
1文ずつでも動きますが、途中で失敗したときに前後のつじつまが合わなくなります。だから、関連する処理はまとめて扱う方が安全です。
| 考え方 | やさしい意味 |
|---|---|
| Atomicity | 全部やるか、全部やらないか |
| Consistency | データのルールをこわさない |
| Isolation | 他の処理と混ざりにくくする |
| Durability | 確定した結果を残す |
この4つはACIDと呼ばれます。名前は難しく見えますが、言っていることは「途中で壊れないようにする」「確定したら消えにくくする」という安全の約束です。
身近なたとえで考える
トランザクションは、駅の改札を通るイメージに近いです。切符を入れて、条件がそろえば通れる。途中でエラーがあれば、その場で止まる。処理がバラバラに進むのではなく、通るか止まるかを1回で決めています。
別のたとえなら、夕飯の買い物です。肉だけ買えて野菜が買えなかったら、料理の予定が崩れます。必要なものをまとめてそろえるから、夕飯として意味があるのです。データベースでも同じで、必要な更新を1セットにまとめるから、情報の意味が崩れません。
この考え方がないと、たとえば「在庫は減ったのに注文履歴がない」「残高は引かれたのに相手に届いていない」といった困りごとが起きます。人の作業ならあとで見つけて直せることもありますが、システムでは一瞬のズレがそのまま記録に残るため、最初からひとまとまりにしておくことが大切です。
実務ではどう使うのか
ネット通販を例にすると、注文1件で次のような処理が動きます。
- 注文データを入れる
- 在庫を1つ減らす
- 支払い情報を記録する
- 発送待ちの状態にする
このうち1つでも失敗したら、途中までの変更は取り消したいはずです。もし支払い記録だけ失敗したのに在庫だけ減ってしまうと、画面上は売れたことになっていても、実際の注文処理は完成していない状態になります。
そこで、最初に「トランザクション開始」をして、全部の処理を進めます。最後まで問題がなければ commit で確定します。途中でエラーが出たら rollback で戻します。こうして、利用者にも運用側にも、筋の通ったデータを残せます。
また、同時にたくさんの人が使うサービスでは、同じ在庫を2人が同時に取ってしまうことがあります。こうした競合を防ぐためにも、トランザクションの考え方が役立ちます。特に注文、決済、在庫のように、関係するデータが複数の表にまたがる場面で重要です。
設計を考えるときは、どの表がどうつながるかを先に見ておくと整理しやすくなります。たとえば ER図 で関係を見ておくと、「どの更新を同時にまとめるか」が考えやすくなります。
トランザクションは、処理を速くするためだけのものではありません。データを壊さず、あとで困らないようにするための仕組みです。
図解で整理

ここでは、トランザクションの流れを「成功した場合」と「失敗した場合」に分けて見ます。
成功したとき
- 開始する
- 更新1を行う
- 更新2を行う
- 更新3を行う
commitで確定する
失敗したとき
- 開始する
- 更新1を行う
- 更新2でエラーが出る
rollbackで元に戻す
この流れを見ると、トランザクションの役目はとてもシンプルです。全部そろったら確定、どこかで失敗したら取り消し。この1本のルールがあるから、複数の処理を安心して扱えます。
なお、現場では「どこまでを1つのトランザクションにするか」も大切です。広げすぎると他の処理とぶつかりやすくなり、狭すぎるとデータのつじつまが合わなくなります。だから、実際には「何を同時に守る必要があるか」を見て、ちょうどよい範囲を決めます。
3問クイズ
第1問
トランザクションを使う一番の理由は何ですか?
答えを見る
答え:複数の処理の途中で失敗しても、片方だけ変わったままにせず、元の状態へ戻せるようにするためです。
第2問
commit と rollback の役割はそれぞれ何ですか?
答えを見る
答え:commit は変更を確定すること、rollback は失敗した変更を取り消して元に戻すことです。
第3問
ネット通販で注文、在庫、支払いをまとめて扱うとき、トランザクションが役立つのはなぜですか?
答えを見る
答え:3つの処理を同時にそろえて、1つでも失敗したら全部を取り消せるので、データの食い違いを防げるからです。
まとめ
トランザクションとは、複数の処理を1つのまとまりとして扱う仕組みです。ポイントは、全部成功したら確定し、失敗したら元に戻すことです。これにより、データが半端な状態で残るのを防げます。
まずは「なぜまとめるのか」を覚えれば十分です。細かな用語はあとからでも大丈夫です。実務では、注文・決済・在庫のように、関係するデータをまとめて守る場面で何度も出てきます。
