Теория· 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 объединяет несколько операторов в одну транзакцию.
Прочитайте урок до конца — прогресс засчитается автоматически