锁定 innodb 行并获得实时版本

Locking innodb row and get a live version

我在写一个网游,里面有一个叫出兵的板块。当一个帐户上的两个或更多用户尝试发送一个动作时,队伍会加倍。

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

真的可以吗?因为我只 select 用于在 innodb 参考中以共享模式更新和锁定。

任何帮助都适用。

请在下面找到 mysql 文档以锁定 innodb 中的特定行:

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

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

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

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