MySql = v5.6
表引擎 = InnoDB
我打开了一个 mysql cli。我跑:
START TRANSACTION;
SELECT id FROM my_table WHERE id=1 FOR UPDATE;
然后我打开并运行第二个 cli:
SELECT id FROM my_table WHERE id=1;
我希望它等到我提交或回滚第一个事务,但它没有,它只是立即带回行,就好像没有发生行锁定一样。
我做了另一个测试,我status
在第一个 cli 中更新了一个字段,但在我提交事务之前我看不到第二个 cli 中的更改,证明事务确实有效。
我是误会FOR UPDATE
还是做错了什么?
更新:
FOR UPDATE
第二次SELECT
查询需要