我正在学习 mysql 中的事务。我无法理解行为。我的数据库的隔离级别是可重复读取的。数据库架构:
creade database my_db;
use my_db;
create table locktest(
id integer,
val integer,
primary key (id)
);
insert into locktest (id, val) values (3,6);
我创建了两个用户。用户 1 下一步:
start transaction;
select * from locktest where id = 3;
得到 id = 3,val = 6;
然后,user2 更新:
update locktest set val = 7 where id = 3;
select * from locktest where id = 3;
结果是 id = 3,val = 7;
用户 1 选择:
select * from locktest where id = 3;
ID = 3,验证 = 7
所以,我的问题是为什么 user2 可以更新表,不应该被 user1 锁定?为什么在最后一次从 user1 中选择它得到更新的值,不应该根据可重复的读取隔离级别保持一致?