题目描述
事务中的可重复问题
题目来源及自己的思路
对可重复读理解不清晰
相关代码
@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;(?)
会返回什么呢?又是什么原因呢?
会返回李四。
一套事务的处理内容是连贯的,一个事务和另一个事务之间是隔离的。
把单个事务看成是一块连贯操作就好,里面你的顺序该怎么运行还是怎么执行。
事务如果失败会回滚,意思就是回滚你之前的操作,也就说你之前的每一句都是执行了的,只不过没有真正地入库。