Ответ
Транзакция в базе данных — это последовательность операций, выполняемых как единое целое. Она либо полностью завершается успешно (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)
}