Перейти к содержимому

BEGIN

BEGIN начинает транзакцию текущего соединения.

BEGIN [TRANSACTION]
[ISOLATION LEVEL { READ COMMITTED | SNAPSHOT }]

READ COMMITTED получает новое зафиксированное представление для каждого оператора. SNAPSHOT фиксирует представление при начале транзакции. Без секции движок использует настроенное значение по умолчанию.

TRANSACTION является необязательным служебным словом. При выполнении принимаются уровни READ COMMITTED и SNAPSHOT.

Успех возвращает пустой командный результат и оставляет транзакцию активной на соединении.

Повторный BEGIN в той же активной транзакции завершается ошибкой. Транзакцию нужно закончить COMMIT или ROLLBACK; закрытие embedded-дескриптора откатывает её.

SERIALIZABLE, REPEATABLE READ и READ UNCOMMITTED разбираются, но явно отклоняются исполнителем. CLI версии 1.2 теряет секцию изоляции и запускает транзакцию по умолчанию; для SNAPSHOT используйте embedded- или TCP-метод begin_with_isolation.

BEGIN требует аутентифицированную сессию с CONNECT. Операторы внутри транзакции проходят собственную проверку прав при выполнении.

CREATE TABLE ref_begin (id INTEGER PRIMARY KEY);
BEGIN;
INSERT INTO ref_begin VALUES (1);
ROLLBACK;
SELECT id FROM ref_begin;

См. Транзакции и конкурентность, COMMIT и ROLLBACK.