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