我有一個名爲座位表,其中有這樣的這次更新,選擇組合查詢線程安全嗎?
ID的模式,採取
對於每一個用戶,我採取隨機尚餘ID和分配給該用戶,這裏簡單說,我讓= 1。我使用
update seats u inner join (
SELECT id from seats
where taken is null limit 1) s
on s.id = u.id set taken = 1;
此查詢的查詢需要與拍攝標誌空隨機座位,併爲座位它使標誌1.在此查詢工作正常,這是線程安全的?
考慮這種情況,我有兩個用戶並行。對於user1,我選擇X行,並且在更新查詢運行之前,user2簽入,並且對於該用戶,select查詢返回與user1相同的行。所以我會結束更新同一行兩次。
此查詢可以使用此方案嗎?
你正在使用哪種編程語言與MySQL? – 2014-11-24 07:39:58
@FathahRehmanP我正在使用PHP。但是,問題語言不是獨立的。 – Dude 2014-11-24 08:36:15
你可以嘗試像SELECT ... FOR UPDATE – 2014-11-24 09:39:32