可重复读的一个小问题

发布于 2022-09-12 22:31:44 字数 350 浏览 30 评论 0

题目描述

事务中的可重复问题

题目来源及自己的思路

对可重复读理解不清晰

相关代码

@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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

东走西顾 2022-09-19 22:31:44

会返回李四。
一套事务的处理内容是连贯的,一个事务和另一个事务之间是隔离的。
把单个事务看成是一块连贯操作就好,里面你的顺序该怎么运行还是怎么执行。
事务如果失败会回滚,意思就是回滚你之前的操作,也就说你之前的每一句都是执行了的,只不过没有真正地入库。

维持三分热 2022-09-19 22:31:44

返回李四,因为是自己的事务里的操作,自己做的修改自己当然看的见
除非read uncommited,否则提交之前其他事务看到的还是张三

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文