我正在写一个网络游戏,有一个部分叫出兵。当一个帐户上的两个或更多用户尝试发送一个 Action 时,部队就会增加一倍。
我想从 mysql 获取该行的实时版本,并阻止任何读取、写入、更新该行上的任何内容,直到我完成为止。
这真的可能吗?因为我在innodb引用中只选择更新并锁定共享模式。
如有任何帮助,我们将不胜感激。
最佳答案
BEGIN;
SELECT ... FROM t ... WHERE ... FOR UPDATE;
...
UPDATE t ...;
COMMIT;
其他人可以从 t
读取行,但如果他们尝试修改 SELECT
触及的行,则会被延迟或死锁。
您真的需要阻止给定行的所有读取吗?请进一步解释您的情况。
关于php - 锁定 innodb 行并获取实时版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507745/