Транзакция (TRANSACTION)
Группа SQL операций, выполняемых как единое целое: либо все успешно, либо ни одна.
BEGIN; -- операции COMMIT; -- или ROLLBACK;
Объяснение
Пример
-- Перевод денег между счетами BEGIN; UPDATE accounts SET balance = balance - 1000 WHERE id = 1; UPDATE accounts SET balance = balance + 1000 WHERE id = 2; COMMIT; -- Если что-то пошло не так: -- ROLLBACK;
Связанные термины
Анекдоты по теме
— Чем отличается COMMIT от ROLLBACK? — COMMIT — это «я уверен». ROLLBACK — это «прости, я был неправ». — А SAVEPOINT? — Это «подожди, я ещё не уверен, но хочу запомнить этот момент».
— Зачем нужен VACUUM в PostgreSQL? — PostgreSQL не удаляет строки физически сразу. UPDATE создаёт новую версию, DELETE помечает старую как мёртвую. VACUUM убирает мёртвые строки. — Как уборщик? — Точно. И autovacuum делает это автоматически.
— Что такое two-phase commit? — Протокол для распределённых транзакций через несколько баз. — Фазы? — 1: все участники готовятся и говорят «готов». — 2: если все готовы — все фиксируют. Иначе — все откатывают. — Надёжно? — Да, но медленно. Один slow participant тормозит всех.