在mysql的innodb引擎 默认RR隔离级别下, 假设表中有5条数据,
1.如果事务A中查询所有数据
2.然后在事务B中向表中插入一条数据并提交
3.回到事务A中查询, 发现数据没有新增
上面三步貌似已经可以证实解决了幻读的问题
但是如果在第三步不是查询, 而是插入, 却会提示你数据已经存在出现主键冲突, 或者你进行update, 也是可以进行更新的(虽然读不到这条数据) 这应该不属于幻读了吧?
那么这到底是什么原因呢?
在mysql的innodb引擎 默认RR隔离级别下, 假设表中有5条数据,
1.如果事务A中查询所有数据
2.然后在事务B中向表中插入一条数据并提交
3.回到事务A中查询, 发现数据没有新增
上面三步貌似已经可以证实解决了幻读的问题
但是如果在第三步不是查询, 而是插入, 却会提示你数据已经存在出现主键冲突, 或者你进行update, 也是可以进行更新的(虽然读不到这条数据) 这应该不属于幻读了吧?
那么这到底是什么原因呢?
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
这个推荐一篇文章吧,希望能解决你的困惑,写的还是挺详细的:
拨开云雾见天日:数据库单机事务原理全解析