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;