请问在同一个事务中,如果我没有提交事务(因为我已经捕获到异常了)这个时候需要回滚操作吗?我看到很多代码上都做了回滚,但是此时我连事务都没提交,都没真正与数据库发生交互,回滚什么呢?
还有如果我在提交事务的过程中出现异常,这时需要回滚吗?如果出现异常那么事务提交失败,这个时候应该也没有真正影响到数据库,是不是也不需要回滚?那么回滚真正是在什么地方用呢?
你对事物提交和回滚的过程没整清楚。提交出错再回滚,那是说你在commit trans的时候出错了再回滚。回滚可以发生在你commit trans之前。比如一个sql执行出错。
1.不提交只有两种情况:
客户端进程终止,数据库主动回滚;
执行代码的进程一直等待,这会阻塞其他修改该数据的会话
2.提交失败
只有一种情况吧: 数据库报错,这时数据库给客户端说数据库出问题了,问题修复后应该会主动回滚
综上,无论因为网络中断还是db服务器问题(磁盘、电源...),都会主动回滚,否则产生阻塞
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。