トランザクション は、複数の更新を 全部成功させるか、全部なかったことにするか でまとめる仕組みです。
途中で失敗したときに、一部だけ反映されてデータが壊れるのを防ぐために使います。
まず押さえたいポイント
- 複数の更新をひとまとまりとして扱う
COMMITは確定、ROLLBACKは取り消し- 注文作成と在庫更新のように、途中で失敗すると困る処理で重要
- MySQL や PostgreSQL でよく使う
どんな場面で使うか
- 注文を作ると同時に在庫を減らす
- 会員登録と初期データ作成をまとめる
- 権限変更と監査ログ作成を同時に行う
このように、複数の更新がそろって初めて正しい処理で使われます。
実務で見るポイント
トランザクションが大事なのは、エラーそのものより 中途半端なデータが残ること を防ぎやすいからです。
ただし、必要以上に長いトランザクションはロックや競合の原因にもなりやすいので、守るべき処理だけをまとめる方が実務では大事です。
よくある誤解
トランザクションを使えば何でも安全になるわけではありません。
DB 更新のまとまりは守れますが、外部 API 呼び出しやメール送信まで完全に巻き戻せるわけではないので、別の設計が必要になることもあります。