次の SQL 疑似コードがあるとします。
... open transaction ...
SELECT * FROM users WHERE users.id = 5
... some calculation here ...
INSERT INTO users (id) VALUES (5)
... commit transaction ...
REPEATABLE_READ 分離は、同時接続Users[id=5]
がクエリと挿入の間に挿入されるのを防ぐために保証されていますSERIALIZABLE
か、それとも分離を使用する必要がありますか?
注:可能であれば、データベースに依存しないソリューションを探しています。そうでない場合は、業界の何らかのコンセンサスに反するように、複数のデータベースから経験的な証拠を提供してください。
UPDATE : 元の質問には、範囲ロックを利用した誤ったクエリが含まれていました。この質問の目的は、範囲ロックを必要としないクエリに焦点を当てることであるため、質問を更新しました。