php - 锁定 innodb 行并获取实时版本

标签 php mysql innodb

我正在写一个网络游戏,有一个部分叫出兵。当一个帐户上的两个或更多用户尝试发送一个 Action 时,部队就会增加一倍。

我想从 mysql 获取该行的实时版本,并阻止任何读取、写入、更新该行上的任何内容,直到我完成为止。

这真的可能吗?因为我在innodb引用中只选择更新并锁定共享模式。

如有任何帮助,我们将不胜感激。

最佳答案

BEGIN;
SELECT ... FROM t ... WHERE ... FOR UPDATE;
...
UPDATE t ...;
COMMIT;

其他人可以从 t 读取行,但如果他们尝试修改 SELECT 触及的行,则会被延迟或死锁。

您真的需要阻止给定行的所有读取吗?请进一步解释您的情况。

关于php - 锁定 innodb 行并获取实时版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507745/

相关文章:

mysql - innodb中复合主键的表是否支持组复制

php - 如何在php中生成从F-00001开始的唯一tag_id

mysql - 如何使用特征表查询多对多关系(AND条件)

mysql 以优化的方式向大表添加多列

MySQL 错误 1005 错误号。 150 个带主键

php - 返回MySQL中相同id组的最后一个插入行

php - $variable 和 %$variable% 有什么区别?

java - 有没有办法在php中使用交换加密?

javascript - javascript onClick 不工作

php - 页面不会用 PDO 语句回显结果