您的位置:首页 > 数据库 > Oracle

关于jave在oracle驱动下事务提交与回滚问题

2014-12-18 13:35 363 查看
一直以来,都认为Connection如果设置了setAutoCommit(false)后,启动手工事务提交,必须手工进行commit或者rollback才行。今天正好遇到一个问题,结果大跌眼镜。

于是测试了一下,结果如下(请注意在oracle驱动下,其他环境未知):

1、设置了setAutoCommit(false)后执行后续DML的数据更新操作,没有显式手工进行commit或者rollback,最后设置setAutoCommit(true),后关闭连接,默认提交成功。

2、设置了setAutoCommit(false)后执行后续DML的数据更新操作,执行两段sql更新,中间rollback,第一部分回滚,第二部分不显式手工进行commit,默认提交。

3、设置了setAutoCommit(false)后执行后续DML的数据更新操作,没有显式手工进行commit或者rollback,最后没有设置setAutoCommit(true),关闭连接,默认提交成功。

小结:设置了setAutoCommit(false)后,除非显式rollback,否则默认提交;没有任何显式commit或rollback,设置设置setAutoCommit(true)或者关闭连接,之前的事务也会默认提交。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: