可重复读的一个小问题
题目描述
事务中的可重复问题
题目来源及自己的思路
对可重复读理解不清晰
相关代码
@Transactional
public void testB(){
select * from user where id=1;(张三)
update user set name=‘李四’ where id=1;
select * from user where id=1;(?)
}
问题
因为方法还没有结束,事务还没有提交
select * from user where id=1;(?)
会返回什么呢?又是什么原因呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
会返回李四。
一套事务的处理内容是连贯的,一个事务和另一个事务之间是隔离的。
把单个事务看成是一块连贯操作就好,里面你的顺序该怎么运行还是怎么执行。
事务如果失败会回滚,意思就是回滚你之前的操作,也就说你之前的每一句都是执行了的,只不过没有真正地入库。
返回李四,因为是自己的事务里的操作,自己做的修改自己当然看的见
除非read uncommited,否则提交之前其他事务看到的还是张三