这更像是一种理论问题,可以理解Oracle如何处理executeBatch()请求。
考虑有三个插入语句(PreparedStatement),比如语句1,语句2和语句3被添加到使用executeBatch()方法和Oracle上作为批处理执行。是否有可能在语句1完成之前完成语句2的执行?换句话说,语句2的插入操作是否可以在由操作执行的插入之前成功?
如果Autocommit设置为false。
先谢谢。
答案 0 :(得分:4)
数据库将按照您将它们放入批处理的顺序执行您的语句。
没有无序或并发执行。
答案 1 :(得分:1)
提供自动提交设置为false
如果您在插入的中间查询(正如您在另一个答案的评论中提到的那样),答案是直截了当的:
鉴于在同一连接中,您不能在上一个insert语句完成之前进行查询,这意味着您的查询需要来自另一个连接。
在Oracle中,在提交任何插入/更新/删除之前,其他连接不会看到更改。这意味着,在完成任何插入之前,查询将看到快照,直到您提交更改。
那么你应该不关心这方面的插入顺序。
答案 2 :(得分:0)
处理批处理时,将按照批处理的顺序执行操作。