gpt4 book ai didi

php - MySQL 和 PHP : Using SELECT FOR UPDATE

转载 作者:行者123 更新时间:2023-11-30 22:03:29 24 4
gpt4 key购买 nike

我正在尝试为数据库中的表获取行级锁,以防止任何 future 的 session 在释放锁之前读取该行。

为了实现这一点,我一直在尝试在索引列上使用 SELECT ... FOR UPDATE 语法,但我似乎无法阻止其他 session 在它们读取该行时读取该行使用完全相同的查询。

我还需要做些什么吗?我使用的是 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;

后续请求也将运行完全相同的代码行,但我希望一个请求阻止其他请求启动,直到它提交事务。

最佳答案

您是否查看过有关 InnoDB 锁类型的 MySql 文档?

https://dev.mysql.com/doc/refman/5.5/en/innodb-locking.html

关于php - MySQL 和 PHP : Using SELECT FOR UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42565344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com