UPDATE orders SET quantity = 5, version = version + 1 WHERE id = 42 AND version = 7; -- 更新件数が 0 件 = 読んだ後に誰かが書いた
version: 7
UPDATE … WHERE version = 7
version: 8
0 件更新409 Conflict
| 楽観的ロック | 悲観的ロック | |
|---|---|---|
| 衝突の扱い | 保存時に検出して断る | 読むときに行をロックして防ぐ |
| 向いている | 衝突がまれ・編集に時間がかかる | 衝突が多い・処理が短い |
| コスト | 衝突時にやり直しが要る | 待ちとデッドロック |