SELECT ... FOR UPDATE 和 MAX()

use*_*900 5 mysql select innodb

不要SELECT ... FOR UPDATE在此表中该查询锁行?

表在 InnoDB 中,查询在事务中

select max(id) from table1 FOR UPDATE
Run Code Online (Sandbox Code Playgroud)

我有这个代码,它似乎SELECT ... FOR UPDATE没有锁定行。

Cri*_*tiC 2

SELECT ... FOR UPDATE阻止其他会话执行操作SELECT ... LOCK IN SHARE MODE

使用SELECT ... LOCK IN SHARE MODE哪个来代替

对读取的行设置共享模式锁。共享模式锁使其他会话能够读取行,但不能修改它们。读取的行是最新可用的,因此如果它们属于另一个尚未提交的事务,则读取会阻塞,直到该事务结束。

请参阅文档