SQLLab
Теория· 8 мин· 10 XP

Что такое транзакция

Транзакция — это последовательность операций, которая выполняется как единое целое: либо все операции успешно завершаются, либо ни одна не применяется.

Классический пример: банковский перевод

sql
BEGIN;

UPDATE accounts SET balance = balance - 5000 WHERE id = 1;  -- списать
UPDATE accounts SET balance = balance + 5000 WHERE id = 2;  -- зачислить

COMMIT;

Если после первого UPDATE произошла ошибка — второй не выполнится. Без транзакции деньги исчезли бы «в никуда».

Три команды управления

КомандаДействие
BEGIN (или START TRANSACTION)Начать транзакцию
COMMITЗафиксировать все изменения
ROLLBACKОтменить все изменения с начала транзакции

Autocommit

По умолчанию каждый SQL-оператор в PostgreSQL выполняется в отдельной неявной транзакции (autocommit = on).

sql
-- Это две отдельные автоматические транзакции:
UPDATE accounts SET balance = balance - 5000 WHERE id = 1;
UPDATE accounts SET balance = balance + 5000 WHERE id = 2;

Явный BEGIN объединяет несколько операторов в одну транзакцию.

Прочитайте урок до конца — прогресс засчитается автоматически