Транзакция (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;Связанные термины
Анекдоты по теме
— Что такое HOT update в PostgreSQL? — Heap Only Tuple. Если обновлённые колонки не входят в индексы — PostgreSQL обновляет строку без изменения индекса. — Это быстрее? — Значительно. Индекс не трогается.
— Что делать, если случайно запустил DELETE без WHERE? — Плакать. Если повезёт и была транзакция — сделать ROLLBACK. Если не повезло — доставать бэкап.
— Что такое freeze в PostgreSQL? — PostgreSQL использует 32-bit transaction ID (XID). После ~2 миллиардов транзакций — wraparound. — Что происходит? — Старые строки могут «исчезнуть». База уходит в read-only для безопасности. — VACUUM FREEZE? — Помечает строки как «вечные», освобождая XID пространство. — autovacuum следит за этим.