重复键上的IBM DB2批处理更新行为

时间:2012-11-26 16:19:59

标签: jdbc db2 spring-batch jdbctemplate

我目前正在编写Java应用程序并在自动提交模式下使用Batch Insertion。我的问题是,如果我在批处理中插入4行并抛出BatchUpdateException,因为批处理的第二行触发了Duplicate Key违规! DBC驱动程序是否继续处理剩余的2行,而数据库中插入了3行?或者它是否在第2行停止,使数据库中插入1行?或者它回滚整个批处理,使数据库状态为0插入行?

1 个答案:

答案 0 :(得分:2)

它的工作原理如下:

您拥有步骤中提到的块大小。比如说块大小是10。

因此,每次提交一批10件物品。

比如说,在一个10项中,第4项会抛出重复的键异常,就像你的情况一样。

在这种情况下,整个批次将被拒绝,作业将停止(如果未实施跳过策略)。

但是,之前提交的所有先前正确的块都不会回滚。

要进一步添加,如果在删除不正确的数据后,如果重新启动相同的作业,则作业将从最后出错的块开始。

因此,已编写的数据没有任何反应。