问答

可重复读的一个小问题

作者:admin 2021-04-22 我要评论

题目描述 事务中的可重复问题 题目来源及自己的思路 对可重复读理解不清晰 相关代码 @Transactionalpublic void testB(){ select * from user where id=1;(张三)...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

题目描述

事务中的可重复问题

题目来源及自己的思路

对可重复读理解不清晰

相关代码

@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;(?)
会返回什么呢?又是什么原因呢?

###

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

###

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 可重复读的一个小问题

    可重复读的一个小问题

  • 解析json数据,创建dom元素,怎么使用s

    解析json数据,创建dom元素,怎么使用s

  • vue3使用ts获取路由参数如何定义数据类

    vue3使用ts获取路由参数如何定义数据类

  • linux  shell 脚本查找进程cwd 求解

    linux shell 脚本查找进程cwd 求解

腾讯云代理商
海外云服务器