COMMIT в PostgreSQL: подтверждение транзакции

Оператор COMMIT в PostgreSQL используется для подтверждения транзакции и сохранения всех внесенных в её рамках изменений в базе данных. Без выполнения COMMIT изменения, сделанные внутри транзакции, не фиксируются и могут быть отменены с помощью ROLLBACK.

Основы оператора COMMIT

Базовый синтаксис:

COMMIT;

Использование COMMIT в транзакции

Пример транзакции, в которой добавляется новая запись в таблицу users:

BEGIN;
INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com');
COMMIT;

Если COMMIT не выполнить, изменения не сохранятся в базе данных.

Автоматическая фиксация (Autocommit)

По умолчанию PostgreSQL работает в режиме автосохранения (autocommit), когда каждая отдельная команда INSERT, UPDATE, DELETE автоматически фиксируется. Чтобы использовать COMMIT, необходимо явно начинать транзакцию с BEGIN.

Отмена транзакции перед COMMIT

Если в ходе транзакции произошла ошибка или нужно отменить изменения, можно использовать ROLLBACK вместо COMMIT:

BEGIN;
UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
ROLLBACK;

После выполнения ROLLBACK изменения не сохранятся.

COMMIT и уровни изоляции транзакций

Можно управлять уровнем изоляции транзакции при её начале:

BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;

Использование различных уровней изоляции помогает избежать конфликтов при параллельных изменениях данных.