假設我們有一個表一個與領域時間:日期,狀態:整數,playerId:整數,服務器ID:整數的Oracle SQL更新仔細檢查鎖定
我們的制約因素時間,playerid和服務器ID(UNQ_TIME_PLAYERID_SERVERID)
在一段時間內,我們嘗試更新表A與新的狀態和日期的所有行:
更新狀態= 1,時間= SYSDATE其中服務器ID = XXX和狀態!= 1和時間> SYSDATE
問題,有在單獨的機器,可以在相同的SYSDATE執行相同的更新兩個分離的過程。
和UNQ_TIME_PLAYERID_SERVERID違規發生!
有沒有可能強制Oracle檢查具體更新之前的原因(何時鎖定行獲取)?
我不希望使用任何「選擇更新」事情
爲什麼這是一個問題嗎?只要抓住錯誤並忽略它。 –
我不想簡單地忽略錯誤。對的,這是可能的。但我想知道實際上是否有可能編寫更新,該錯誤根本不會出現。 –
你不能。在您得到肯定回答後,表格(行)可以被鎖定。做這種事情的唯一可靠方法就是嘗試抓住。 – Serg