Оператор 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;Использование различных уровней изоляции помогает избежать конфликтов при параллельных изменениях данных.