Я использую драйвер JDBC postgresql. При отправке пакетного запроса в базу данных драйвер postgres откатывает все, когда возникает ошибка, и результатом является массив только с Statement.Execute_FAILED.
try (Connection connection = getConnection();
PreparedStatement stmt = connection.prepareStatement(UPSERT_THESIS)) {
for (SomeObject d : data) {
stmt.setString(1, d.getId());
stmt.setString(2, d.getName());
stmt.addBatch();
}
int[] result = stmt.executeBatch();}
Я получил результат [-3, -3, -3]. Не имеет значения, включен ли автокоммит.
При использовании других баз данных, таких как Mysql, откат не выполняется, каждый оператор обрабатывается и сохраняется в базе данных, кроме той, где происходит ошибка. Итак, я получил массив результатов со смешанными Statement.Success_NOINFO и Statement.Execute_FAILED ([1,1, -3,1]).
Это postgres jdbc нормальное поведение? Или я что-то здесь не так делаю?