StudyCode
Транзакция — группа операций, выполняющаяся как единое целое: либо применяются все, либо ни одна (BEGIN ... COMMIT, при ошибке ROLLBACK). ACID: Atomicity — «всё или ничего», половина транзакции невозможна; Consistency — база переходит из одного валидного состояния в другое, ограничения (внешние ключи, CHECK) не нарушаются; Isolation — параллельные транзакции не видят промежуточных изменений друг друга (степень строгости задаётся уровнем изоляции); Durability — закоммиченное переживает сбой питания. Классический пример необходимости — перевод денег: списание и зачисление обязаны произойти атомарно.
BEGIN;
UPDATE accounts SET balance = balance - 100
WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100
WHERE id = 2;
-- Сервер упал до COMMIT? Оба UPDATE откатятся,
-- деньги не «исчезнут» между счетами.
COMMIT;