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服务器问题(磁盘、电源...),都应该主动回滚,否则产生阻塞

一只甜甜圈
TA贡献1836条经验 获得超5个赞
感觉这个不会 中间报错了 上面那条executeUpdate()已经把表更新了 ,下面报错的话就不会继续往下走了,所以事务应该是无效的,也不会有commit的可能了;
添加回答
举报
0/150
提交
取消