为了账号安全,请及时绑定邮箱和手机立即绑定

java连接mysql的时候,事务没有提交遇到错误的时候还需要回滚吗?

java连接mysql的时候,事务没有提交遇到错误的时候还需要回滚吗?

繁花如伊 2019-04-17 18:15:30
preparedStatement.executeUpdate();// int i = 2 / 0;preparedStatement = connection.prepareStatement(sql2);preparedStatement.executeUpdate();connection.commit();java进行mysql操作的时候,事务没有提交之前遇到错误的时候还需要回滚吗?
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

commit()的作用就是提交事物呢到数据库,如果在执行commit之前报错而没有执行commit就分为下面的情况:
1.不提交只有两种情况:

客户端进程终止,数据库主动回滚;

执行代码的进程一直等待,这会阻塞其他修改该数据的会话

2.提交失败

只有一种情况吧: 数据库报错,这时数据库给客户端说数据库出问题了,问题修复后应该会主动回滚

综上,无论因为网络中断还是db服务器问题(磁盘、电源...),都应该主动回滚,否则产生阻塞


查看完整回答
反对 回复 2019-05-16
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

感觉这个不会 中间报错了 上面那条executeUpdate()已经把表更新了 ,下面报错的话就不会继续往下走了,所以事务应该是无效的,也不会有commit的可能了;


查看完整回答
反对 回复 2019-05-16
  • 2 回答
  • 0 关注
  • 767 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号