举个例子,假设说数据库里有一张表一共有3列,第一列是自增主键,隔离级别为RR级别。
原先数据库表里有3条数据
1 1 1
2 2 2
3 3 3
-------
此时我开启一个事务A,执行一下select * ,然后再开启一个事务B,insert一条 444并commit。
之后再回到事务A,再次执行select *,毫无疑问111222333,符合可重复读。
再然后我执行一条 sql :update 第三列 = 5 之后再select 结果为
1 1 5
2 2 5
3 3 5
4 4 5
--------
此时发生了幻读,要解决这个问题也很简单,楼上基本说了,就不多解释了。
如有错误麻烦指出。