account表中有3条数据
id  name  money
1   aaa     1000
2   bbb     1000
3   ccc     1000这时用a,b两个命令行窗口访问这张表。
a窗口中设置事务隔离级别为Read committed,并开启事务set   transaction isolation level Read committed;   --可避免脏读,但是避免不了不可重复读和虚读
start transaction;
select * from account;  --发现查询出来记录还是3条b窗口中也开启事务,并且往account表中插入一条数据,并提交start transaction;
insert into account(id,name,money) values('4','ddd',1000);
commit;
这时a窗口再次查询account表,发现account表中有4条记录了。我小弟想问的是,这种情况属于不可重复读还是虚读(幻读)?
因为我查询出来的资料显示:
不可重复读:
当事务a在一次事务里多次查询同一条数据(我不晓得是否可以理解成同一个表),
当事务a第一次查询完后(事务a未结束),事务b对这条数据进行了修改或删除(我不晓得增加算不算)并进行了提交,此时事务a再进行查询,发现上一次和这一次查询结果不一样。虚读:
事务a中进行了多次查询,第一次查询后(事务a未结束),事务b往表中插入了满足事务a查询条件的数据,事务b提交。这时,事务a再次进行查询,发现表中查询结果和第一次不一样了。
小弟感觉不可重复读和虚读的意思理解起来有点模糊,不可重复读里的红色字段是否成立?如果成立,不可重复读和虚读又有什么区别呢?
求大神!!!