Sobes.tech
Назад к вопросам
Middle
7

Что такое транзакция в PostgreSQL? Расскажи про ACID.

Компании, где спрашивали
OZONOZON

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

sobes.tech AI

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

ACID — это набор свойств, гарантирующих корректность транзакций:

  • Atomicity (Атомарность): Все операции транзакции выполняются полностью или не выполняются вовсе.
  • Consistency (Согласованность): Транзакция переводит базу данных из одного корректного состояния в другое, соблюдая все ограничения.
  • Isolation (Изоляция): Одновременные транзакции не мешают друг другу, результаты одной транзакции не видны другим до её завершения.
  • Durability (Надёжность): После фиксации транзакции её изменения сохраняются даже при сбоях.

Пример использования транзакции в Go с PostgreSQL:

tx, err := db.Begin()
if err != nil {
    // обработка ошибки
}

_, err = tx.Exec("INSERT INTO accounts(user_id, balance) VALUES($1, $2)", userID, 100)
if err != nil {
    tx.Rollback()
    // обработка ошибки
}

err = tx.Commit()
if err != nil {
    // обработка ошибки
}

Здесь операции внутри tx либо применятся все, либо при ошибке откатятся.