我目前正在编写Java应用程序并在自动提交模式下使用Batch Insertion。我的问题是,如果我在批处理中插入4行并抛出BatchUpdateException,因为批处理的第二行触发了Duplicate Key违规! DBC驱动程序是否继续处理剩余的2行,而数据库中插入了3行?或者它是否在第2行停止,使数据库中插入1行?或者它回滚整个批处理,使数据库状态为0插入行?
答案 0 :(得分:2)
它的工作原理如下:
您拥有步骤中提到的块大小。比如说块大小是10。
因此,每次提交一批10件物品。
比如说,在一个10项中,第4项会抛出重复的键异常,就像你的情况一样。
在这种情况下,整个批次将被拒绝,作业将停止(如果未实施跳过策略)。
但是,之前提交的所有先前正确的块都不会回滚。
要进一步添加,如果在删除不正确的数据后,如果重新启动相同的作业,则作业将从最后出错的块开始。
因此,已编写的数据没有任何反应。