0

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

4

1 回答 1

2

它是这样工作的:

您有步骤中提到的块大小。例如,块大小为 10。

因此,每次将提交一批 10 个项目。

比如说,在一批 10 个项目中,第 4 个项目会像您的情况一样引发重复键异常。

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

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

进一步补充说,如果在删除不正确的数据之后,如果重新启动相同的作业,那么该作业将完全从它最后出错的块开始。

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

于 2012-11-27T06:17:54.430 回答