SQLLab
Глоссарий/Транзакция (TRANSACTION)
ТранзакцииСредний

Транзакция (TRANSACTION)

Группа SQL операций, выполняемых как единое целое: либо все успешно, либо ни одна.

Синтаксис
BEGIN;
-- операции
COMMIT; -- или ROLLBACK;

Объяснение

Транзакция гарантирует свойства ACID: - Atomicity: всё или ничего - Consistency: база остаётся в корректном состоянии - Isolation: транзакции не видят незакоммиченных изменений друг друга - Durability: после COMMIT данные сохранены В PostgreSQL каждый отдельный запрос автоматически в транзакции (autocommit).

Пример

-- Перевод денег между счетами
BEGIN;
  UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
  UPDATE accounts SET balance = balance + 1000 WHERE id = 2;
COMMIT;
-- Если что-то пошло не так:
-- ROLLBACK;