具体情况是:







这个时候我怎么实现Roll back 第一条更新的数据。
测试代码:






















在debug到更新444后,人工断掉数据库,再执行更新555,会报一个很熟悉的错误:
java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
再将数据库连上,查询A表,里面的数据为空,证明333和444都没有保存。其实只要setAutoCommit(false)的话,是不会存上的。oracle的savepoint是默认的,不用做任何操作;不过要是在sql中使用了when exception的话,情况就完全变了。
参考资料