ここまで学んだ INSERT / UPDATE / DELETE は、1 文 = 1 つの変更でした。でも実務では、「複数の変更を 1 セットで処理したい」ことがよくあります。
代表例:銀行振込
-- ① A さんの口座から 1000 円減らす UPDATE accounts SET balance = balance - 1000 WHERE id = 1 -- ② B さんの口座へ 1000 円足す UPDATE accounts SET balance = balance + 1000 WHERE id = 2
この 2 文の 間でサーバーが落ちたらどうなるでしょう? ① だけ実行されて ② が実行されないと、1000 円が消失します。
トランザクションは、「複数の SQL を 1 セットとして扱い、全部成功するか全部やり直すか」を保証する仕組みです。 ① と ② のどちらかが失敗したら、自動で両方を取り消してくれます。
📌 このレッスンでは BEGIN / COMMIT / ROLLBACK の存在だけ紹介します。 ここでは「複数の更新が安全に進む仕掛け」があると知っておけば OK。 実装の細かい挙動(分離レベル、ロック、デッドロック…)は本コースのスコープ外です。
銀行振込の途中(① 減らした直後、② 足す前)でサーバーが落ちた場合、トランザクションがあると何が起きる?