我有以下的情況,我希望處理:如何處理兩筆交易在SQL Server更新同一行
值表:
id int
val varchar(20)
used bit
flag int
我想找到第一行WHERE used = 0 AND標誌爲NULL,並將某些內容粘貼到「標誌」中。一旦做到這一點任何其他用戶將無法使用該行(因爲標誌不爲null)
這是很簡單的做,當然:
UPDATE top (1) mytable
SET flag = someUniqueValue
WHERE used = 0
AND flag IS NULL
我想知道的是,如果發生了什麼兩個用戶同時運行相同的UPDATE。很明顯,一個人會先到達那裏。
我不知道如何去測試這個場景,所以找不到我自己。
第二位用戶是否超過第一位? (直接或在鎖定釋放後?)
第二個用戶被鎖定並出現錯誤? (如果是這樣,我怎麼去檢測錯誤?)
任何幫助,將不勝感激。
是 - 最終發現 – Graham