mysql事务RR隔离级别到底能否解决幻读的问题?

在mysql的innodb引擎 默认RR隔离级别下, 假设表中有5条数据,
1.如果事务A中查询所有数据

2.然后在事务B中向表中插入一条数据并提交

3.回到事务A中查询, 发现数据没有新增

上面三步貌似已经可以证实解决了幻读的问题

但是如果在第三步不是查询, 而是插入, 却会提示你数据已经存在出现主键冲突, 或者你进行update, 也是可以进行更新的(虽然读不到这条数据) 这应该不属于幻读了吧?

那么这到底是什么原因呢?

阅读 5.3k
2 个回答

RR在读取数据,事务开启的时候,不允许修改操作。可以解决不可重复读的问题,但是还是不能根本解决幻读问题。幻读对应的应该是insert操作。RR针对的是update操作。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题