0
我在Sybase中使用以下代碼中的過程。在更新Sybase中的表期間解決協調問題
begin transaction get_virtual_acc
UPDATE store_virtual_acc SET isProc = 1, Uid = @uid, DateReserv = getdate()
from store_virtual_acc (index idx_id) WHERE id = (SELECT min(id) FROM store_virtual_acc (index idx_uid) where Uid = null and isProc = null)
commit transaction get_virtual_acc
的問題是,當所述程序被稱爲多用戶concurently他們可以接收相同的分鐘(ID)和與不同的值@uid表更新同一行。結果是數據失真。有必要得到一個結果,如果該行已經選擇更新一個用戶,另一個用戶不能選擇它。表具有鎖定類型的數據行。
試圖用事務級鎖定如下 組事務隔離級別3 交易開始之前,但aplication至極調用的程序獲得異常 值java.sql.SQLException:您的服務器命令(族ID#0,過程ID#530)遇到了死鎖情況。請重新運行您的命令。
我將不勝感激任何幫助。