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