Встречается на собеседованиях • сегодня

Можно ли делать 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
}

Изменения в первой таблице будут отменены автоматически при возникновении исключения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы