【发布时间】:2021-05-05 00:58:36
【问题描述】:
例子:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION;
SELECT * FROM t1; // to "create shapshot". For simplicity t1 contains 1 row 1 column which contains value 1.
// another transaction updates this row and change 1 to 2 and commits.
SELECT * FROM t1; // we see no changes. As expected in repeatable read.
SELECT * FROM t1 FOR UPDATE; // i see change row. Why?
我无法找到对这种行为的解释。为什么锁读忽略隔离级别?
【问题讨论】:
-
请注意,在
FOR UPDATE之后添加的SELECT * FROM t1;仍然返回值 1。我可以理解它为什么会这样工作,但这有点令人惊讶。 -
这是我的预期行为
标签: mysql sql database transactions