Назад к вопросам
OZON
Middle
7
Что такое транзакция в PostgreSQL? Расскажи про ACID.
Компании, где спрашивали
Ответ от нейросети
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 либо применятся все, либо при ошибке откатятся.