トランザクション

簡単に言うと、

「一連の処理をひとまとまりにして、全部成功するか、全部取り消すか」

という仕組みです。

例えば、銀行アプリを作ってるとして

  1. Aさんの口座から1万円を引き出す

  2. Bさんの口座に1万円を振り込む

この2つの処理は「セット」で成功する必要がある

  • Aさんの口座からお金を引き出したのに、Bさんに振り込めなかったら、お金の行先がなくなってしまう

  • 逆に、振り込んだのにも関わらず引き落とされなかったらお金が増えてしまう。

そのため、この2つは トランザクション にする。

SQLで書くと、

BEGIN; — トランザクション開始

UPDATE accounts SET balance = balance – 10000 WHERE name = ‘Alice’;
UPDATE accounts SET balance = balance + 10000 WHERE name = ‘Bob’;

COMMIT; — 正常に終わったら確定

もし途中で何かエラーが起きたら、

ROLLBACK; -- 全てなかったことにする

トランザクションの4つの性質(ACID特性)

  1. Atomicity(原子性):全部成功か、全部失敗か。中途半端はできない。

  2. Consistency(一貫性):処理の前後でデータが正しい状態であること。

  3. Isolation(独立性):他の人の操作と混ざらないようにする。

  4. Durability(永続性):確定(COMMIT)された処理は絶対消えない。

タイトルとURLをコピーしました