Sobes.tech
Назад к вопросам
Junior — Middle
69

Мог бы ты привести пример того, как одна транзакция работает независимо от другой в базе данных?

Ответ от нейросети

sobes.tech AI

В базах данных транзакции обеспечивают изоляцию, что значит, что изменения, сделанные в одной транзакции, не видны другим до её коммита. Это позволяет двум транзакциям работать независимо.

Например, в Java с использованием JDBC:

Connection conn = dataSource.getConnection();
try {
    conn.setAutoCommit(false); // начинаем транзакцию

    // Транзакция 1
    PreparedStatement ps1 = conn.prepareStatement("UPDATE accounts SET balance = balance - 100 WHERE id = ?");
    ps1.setInt(1, 1);
    ps1.executeUpdate();

    // Пока транзакция не закоммичена, другие транзакции не увидят изменения

    conn.commit(); // фиксируем изменения
} catch (SQLException e) {
    conn.rollback(); // откат при ошибке
} finally {
    conn.close();
}

Если параллельно запущена другая транзакция, она не увидит изменения первой, пока та не сделает commit. Это обеспечивает независимость и целостность данных.