簡體   English   中英

MySQL InnoDB全局變量?

[英]MySQL InnoDB Global Var?

我要執行以下代碼:想法是獲取尚未使用的MID最低的項( mutex = 0 )。 為了防止其他線程讀取此行,使用了FOR UPDATEUPDATE減少了mutex

START TRANSACTION;
SELECT MID as m, sender, receiver, content FROM queue WHERE mutex = 0 ORDER BY MID ASC limit 1 FOR UPDATE; 
UPDATE queue set mutex = -1 WHERE MID = m;
COMMIT;

但是,僅在執行SELECT行時才知道m 如何在下一個查詢中訪問它而不中斷查詢,這將停止TRANSACTION

PS:我知道互斥鎖不是我正在使用的東西。

您可以使用一個變量:

START TRANSACTION;
SELECT @m:=MID, sender, receiver, content FROM queue WHERE mutex = 0 ORDER BY MID ASC limit 1 FOR UPDATE; 
UPDATE queue set mutex = -1 WHERE MID = @m;
COMMIT;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM