ACID
Четыре свойства надёжных транзакций: Atomicity, Consistency, Isolation, Durability.
BEGIN; ... COMMIT; -- ACID гарантируетсяОбъяснение
Пример
-- Пример нарушения без транзакции:
-- Списали деньги с одного счёта, сервер упал — деньги пропали.
-- С транзакцией:
BEGIN;
UPDATE acc SET balance = balance - 500 WHERE id = 1;
UPDATE acc SET balance = balance + 500 WHERE id = 2;
COMMIT; -- оба UPDATE применятся, или ни одинСвязанные термины
Анекдоты по теме
— Зачем нужен VACUUM в PostgreSQL? — PostgreSQL не удаляет строки физически сразу. UPDATE создаёт новую версию, DELETE помечает старую как мёртвую. VACUUM убирает мёртвые строки. — Как уборщик? — Точно. И autovacuum делает это автоматически.
— Почему база данных грустит на свидании? — Потому что она всё время ждёт COMMIT. А он всё не приходит и не приходит. А без COMMIT никаких отношений дальше первого свидания.
— Что такое DDL транзакции? — В PostgreSQL DDL операции (CREATE, ALTER, DROP) транзакционны. — То есть можно откатить DROP TABLE? — Да! BEGIN; DROP TABLE users; ROLLBACK; — таблица цела. — В MySQL? — DDL делает implicit COMMIT. Откатить нельзя. — Это важное отличие.