我想从postgreSQL数据库中的多个表中删除条目。这些表有外键约束,所以我只需要按特定顺序删除它们(否则删除将失败(。
我正在考虑将它们添加到一个批次中,并运行executeBatch((
我知道executeBatch将所有语句一起提交给驱动程序,但语句是如何执行的?删除的顺序是否会按照添加到批次的顺序进行维护?我找不到API文档中提到的内容
JDBC 4.3规范在14.1.2成功执行部分明确指定了批执行的行为:
批处理命令按顺序串行执行(至少在逻辑上(其中它们被添加到该批次中。
和
数组中的条目按照命令已被处理(同样,这与中的顺序相同命令最初被添加到批中(。
;至少在逻辑上"为数据库提供了一些重新排序的余地作为优化,只要得到的行为与按指定顺序执行批处理的行为相同。按顺序执行对于确保返回的更新计数匹配以及异常行为也是必要的。
它们按顺序执行。
";批处理";是收集SQL语句并将其作为一个块、一系列语句进行传输,以减少与数据库服务器通信的网络开销。
一个完整的";发送SQL,等待响应";这需要时间,所以通过同时发送多个请求,可以消除大量的等待时间。