BEGIN#
BEGIN
BEGIN — начать блок транзакции
Синтаксис
BEGIN [ WORK | TRANSACTION ] [transaction_mode
[, ...] ] wheretransaction_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. Рекомендуется быть осторожным с семантикой транзакции при портировании приложений баз данных.