更新消失とは?こうしんそうしつ
更新消失とは、2つのトランザクションが同じ行を読み、それぞれ読んだ値をもとに書き戻した結果、先に反映された更新が後の書込みに上書きされて消える異状。どちらの処理も単体では正常に完了しエラーも出ないまま、残った値だけが誤るところが厄介である。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
「読む→計算する→書く」の3手順の間に他者の更新が挟まると、計算の前提が古いものになる。同時に書いたことではなく、古い前提のまま上書きしたことが問題の本質で、だからロックの開始時点を更新時ではなく読取り時まで前倒しする必要が生じる。分離レベルと異状の対応を問う出題では、他の異状と識別できることが求められる。
具体例
在庫100の行を2つの受注処理が同時に読み、片方が20引いて80を、もう片方が30引いて70を書くと、結果は70になり本来の50にならない。SELECT ... FOR UPDATEで読むか、更新時のWHERE句へ読取り時点の版番号を付けて0件更新を検出すれば防げる。
試験での引っ掛け
ダーティリードやノンリピータブルリードは「読んだ値がおかしい」異状だが、こちらは書いた結果が消える異状で、読み側は最後まで正しい値しか見ない。READ COMMITTEDにしただけでは防げない点も落とし穴で、コミット済みの値を読んでいてもその後の上書きは起きる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。