1
我正試圖獲取數據庫中表的行級鎖,以防止任何將來的會話讀取該行直到鎖被釋放。MySQL和PHP:使用SELECT FOR UPDATE
爲了實現這一點,我一直試圖在索引列上使用SELECT ... FOR UPDATE
語法,但是我似乎無法阻止其他會話在使用完全相同的查詢時讀取該行。
還有什麼我需要做的嗎?我使用的是MySQL 5.5,PHP 7,問題表是Innodb。
爲了詳細說明,流程是這樣的:
START TRANSACTION;
SELECT id FROM tbl WHERE id = 1 FOR UPDATE;
... (PHP stuffs)
UPDATE tbl SET value = 'xyz' WHERE id = 1;
COMMIT TRANSACTION;
後續的請求也將運行的代碼完全一樣的臺詞,但我想一個請求從開始直到它提交事務阻止其他人。
我不相信這些適用於使用'FOR UPDATE'時。 –
歡迎來到SO @cesarandré請避免鏈接唯一的答案。如果不能發表評論,請使用評論部分,首先收集聲望。 – 2017-07-19 18:18:59