Встречается на собеседованиях • сегодня
Можно ли делать commit при зафиксированных данных в первой таблице и ошибке во второй таблице
Нет, транзакция либо полностью выполняется, либо полностью откатывается. В JDBC это реализовано через Connection.setAutoCommit(false) и методы commit()/rollback().
Пример:
java
try (Connection conn = dataSource.getConnection()) {
conn.setAutoCommit(false);
// Первая таблица - успешный update
try (PreparedStatement stmt1 = conn.prepareStatement("UPDATE table1 SET col1=? WHERE id=?")) {
stmt1.setString(1, "value");
stmt1.setInt(2, 1);
stmt1.executeUpdate();
}
// Вторая таблица - ошибка
try (PreparedStatement stmt2 = conn.prepareStatement("UPDATE table2 SET invalid_col=? WHERE id=?")) {
stmt2.setString(1, "value"); // Ошибка - столбец не существует
stmt2.executeUpdate(); // Будет исключение
}
conn.commit(); // Не выполнится из-за ошибки
} catch (SQLException e) {
// Автоматический rollback
}Изменения в первой таблице будут отменены автоматически при возникновении исключения.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы