QA Dojo
ハンズオン
進捗 0/47

トランザクションとは?

スライド 1 of 4

ここまで学んだ 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。 実装の細かい挙動(分離レベル、ロック、デッドロック…)は本コースのスコープ外です。

銀行振込の途中(① 減らした直後、② 足す前)でサーバーが落ちた場合、トランザクションがあると何が起きる?