BEGIN#

BEGIN

BEGIN

BEGIN — начать блок транзакции

Синтаксис

BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]

where transaction_mode is one of:

    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY
    [ NOT ] DEFERRABLE

Описание

BEGIN инициирует блок транзакции, то есть все операторы после команды BEGIN будут выполнены в одной транзакции до явного указания COMMIT или ROLLBACK. По умолчанию (без BEGIN), Tantor BE выполняет транзакции в режиме автокоммита, то есть каждый оператор выполняется в своей собственной транзакции, и коммит выполняется неявно в конце оператора (если выполнение было успешным, в противном случае выполняется откат).

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

Если указан уровень изоляции, режим чтения/записи или отложенный режим, новая транзакция будет иметь эти характеристики, как если бы была выполнена команда SET TRANSACTION.

Параметры

WORK
TRANSACTION

Необязательные ключевые слова. Они не оказывают никакого влияния.

Ссылка на SET TRANSACTION содержит информацию о значении других параметров этого оператора.

Примечания

Ссылка START TRANSACTION имеет ту же функциональность, что и BEGIN.

Используйте COMMIT или ROLLBACK для завершения блока транзакции.

Выполнение команды BEGIN при нахождении внутри блока транзакции вызовет предупреждающее сообщение. Состояние транзакции не изменяется. Чтобы вложить транзакции внутри блока транзакции, используйте точки сохранения (см. SAVEPOINT).

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

Примеры

Чтобы начать блок транзакции:

BEGIN;

Совместимость

BEGIN - это расширение языка Tantor BE. Оно эквивалентно команде START TRANSACTION стандарта SQL, на странице справки которой содержится дополнительная информация о совместимости.

DEFERRABLE transaction_mode является расширением языка Tantor BE.

Кстати, ключевое слово BEGIN используется для другой цели во встроенном SQL. Рекомендуется быть осторожным с семантикой транзакции при портировании приложений баз данных.