
124
ひとまとまりの実行した処理を
なかったことにする
4-16
トランザクション内の処理で問題が発生したときに、処理を取り消して
トランザクション開始時点の状態まで戻すことをロールバックと呼びま
す。データベース上で実行される処理は常に正常に行われるとは限りませ
ん。プログラムにおけるバグや、ネットワーク障害によってデータベース
に接続できなくなるなど、さまざまな想定外の問題が起こります。そのよ
うなときにトランザクション内の処理を途中で中断してしまうと、データ
の整合性がとれなくなってしまうことがあります。これを防ぐために、ロ
ールバックを用いて
します(図4-31)。
銀行口座の例で考えてみましょう。A口座から B口座に 10 万円を送金す
るときは、正常な場合、データベース上ではトランザクションを用いて
「A口座の預金をマイナス10 万円にする」「 B口座の預金をプラス10 万円
にする」といった2 つの処理を実行し、最後にコミットという流れになり
ます。
しかし、A口座の値を更新した直後に問題が発生し、処理が継続できな
くなってしまった場合、このままコミットを行ってしまうと、B口座の更
新がまだ行われていないのでデータの整合性が合わなくなってしまいま
す。このようなときにロールバックを行って、トランザクション開始時点
の状態まで巻き戻します。結果として
...