Что такое транзакция

«Что такое транзакция» — вопрос из категории Базы данных, который задают на 41% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Транзакция в базе данных — это последовательность операций, выполняемых как единое целое. Она либо полностью завершается успешно (commit), либо откатывается (rollback) при ошибке, сохраняя целостность данных.

Основные свойства (ACID):

  • Атомарность — все операции выполняются или ни одна
  • Согласованность — данные остаются валидными
  • Изолированность — параллельные транзакции не мешают друг другу
  • Долговечность — результаты сохраняются после завершения

Пример в Go с database/sql:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

_, err = tx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1")
if err != nil {
    tx.Rollback()
    return
}

_, err = tx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2")
if err != nil {
    tx.Rollback()
    return
}

err = tx.Commit()
if err != nil {
    log.Fatal(err)
}