2012-01-22 17 views
0

次の更新クエリは常にテーブルデータを変更しませんか?同時テーブル更新

update mytable set column1 = column1 

ワンダー失われたアップデートがあるでしょうか?

最初にcolumn1の値はoldValueです。 2つのトランザクション(t1とt2)があり、t2はt1の途中で開始します。

t1: update mytable set column1 = 'newValue' 

t2: update mytable set column1 = column1 

T2のトランザクションは、後でそれはまた後でt1より終えT1より始めました。

質問:column1にはどのような値が割り当てられますか?

+0

ああ、尋ねる前に確認しなければならなかった。 2番目のトランザクションは、最初のトランザクションがコミットまたはロールバックされるまでブロックされます。だから私は答えは、そのようなクエリは、テーブルのデータを変更することは決してないと仮定します。 –

答えて

1

トランザクション分離レベルは、異なるトランザクションを分離するものであり、読み取りコミットまたはそれ以上の分離レベルを使用すると問題は発生しません。

私の知る限りでは、「読み取りコミットされていない」分離レベルであっても、Oracleのレコードは更新されません。

関連する問題