在Oracle上执行的executeBatch()是按顺序完成的吗?

时间:2014-11-20 05:59:15

标签: java oracle jdbc

这更像是一种理论问题,可以理解Oracle如何处理executeBatch()请求。

考虑有三个插入语句(PreparedStatement),比如语句1,语句2和语句3被添加到使用executeBatch()方法和Oracle上作为批处理执行。是否有可能在语句1完成之前完成语句2的执行?换句话说,语句2的插入操作是否可以在由操作执行的插入之前成功?

如果Autocommit设置为false。

先谢谢。

3 个答案:

答案 0 :(得分:4)

数据库将按照您将它们放入批处理的顺序执行您的语句。

没有无序或并发执行。

答案 1 :(得分:1)

  

提供自动提交设置为false

如果您在插入的中间查询(正如您在另一个答案的评论中提到的那样),答案是直截了当的:

鉴于在同一连接中,您不能在上一个insert语句完成之前进行查询,这意味着您的查询需要来自另一个连接。

在Oracle中,在提交任何插入/更新/删除之前,其他连接不会看到更改。这意味着,在完成任何插入之前,查询将看到快照,直到您提交更改。

那么你应该不关心这方面的插入顺序。

答案 2 :(得分:0)

处理批处理时,将按照批处理的顺序执行操作。

Oracle Database JDBC Developer's Guide