我正在研究一個連接到oracle的web應用程序。我們在oracle中有一個表格,其中有一列是「激活的」。任何時候只有一行可以將此列設置爲1。爲了強制執行此操作,我們一直在使用Java中的SERIALIZED隔離級別,但是我們遇到了「無法序列化事務」錯誤,並且無法解決原因。在oracle中READ COMMITTED數據庫隔離級別
我們想知道READ COMMITTED的隔離級別是否可以完成這項工作。所以我的問題是這樣的:
如果我們有涉及以下SQL事務:
SELECT *
FROM MODEL;
UPDATE MODEL
SET ACTIVATED = 0;
UPDATE MODEL
SET ACTIVATED = 1
WHERE RISK_MODEL_ID = ?;
COMMIT;
鑑於有可能對這些交易的一個以上的在同一時間被執行,將它多於一個MODEL行可以將激活標誌設置爲1?
任何幫助,將不勝感激。
類似的,但我想在獨佔模式下鎖定模型並執行更新模型 SET ACTIVATED = 0 WHERE ACTIVATED = 1 更少的行被更新,所以它的性能稍高一些,並且LOCK TABLE會阻止併發活動在桌子上。 – 2009-09-23 23:06:50