我对Java Execute Batch功能有疑问。
例如:我在批处理中添加了10个插入流程,然后执行批处理。如果失败,有一些插入过程成功执行并提交?这意味着批处理中的任何插入过程都会发生自动提交?或者如果一个过程失败,则不会发生整批插入。
把它放入代码:
结果在这里:
con.setAutoCommit(false);
....
statement.addBatch();
....
statement.executeBatch();
....
con.commit();
等于此(如果执行完成失败!!)
....
statement.addBatch();
....
statement.executeBatch();
答案 0 :(得分:1)
如果您的批次失败,那么将回滚该批次的所有状态。 它看起来像
begin transaction
insert into t1(f1,f2) values(1,2)
insert into t1(f1,f2) values(2,3)
insert into t1(f1,f2) values(3,4) -- fail here
insert into t1(f1,f2) values(4,5)
commit
在这种情况下,将回滚所有状态以及第一个参数和第二个。
<强> UPD1 强>
使用自动提交时,它看起来像
begin transaction
insert into t1(f1,f2) values(1,2)
commit
begin transaction
insert into t1(f1,f2) values(2,3)
commit
begin transaction
insert into t1(f1,f2) values(3,4) -- fail here
commit
begin transaction
insert into t1(f1,f2) values(4,5)
commit
在这种情况下,将提交第一个,第二个和第四个参数。