Oracle の読み取り一貫性

id:koichikさんに「負け」と言われたけれど、はい確かに負けでした。orz
Oracle がデフォルトで保障するのは「文レベルの読み取り一貫性」です。「トランザクションレベルの読み取り一貫性」を保障するためには、分離レベルを Serializable にしないといけません。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_v10/server.102/B19215-02/consist.htm
(OTN に登録が必要)

いったいどこでそう思い込んだのか... 心より恥じる。


ということはですね。例えば、トランザクションAがデータの読み取り中に、別のトランザクションBが値を a1 → a2、b1 → b2 と変更した場合、トランザクションAは、(a1, b1) または (a2, b2) の組合せでデータが読めないといけないのに、(a1, b2) あるいは (a2, b1) という組合せで取れてしまうことがあるわけですね。う〜ん、悩ましい...