BEGIN
Начинает блок транзакции.
Синтаксис
BEGIN [ WORK | TRANSACTION ] [ <transaction_mode> [, ...] ]
где transaction_mode может принимать одно из следующих значений:
ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
Описание
BEGIN инициирует блок транзакции, то есть все операторы после команды BEGIN будут выполняться в одной транзакции, пока не будет явно выполнен COMMIT или ROLLBACK.
Без BEGIN Greengage DB запускает транзакции в режиме автокоммита (autocommit), то есть каждый оператор выполняется в собственной транзакции, и коммит неявно выполняется в конце оператора (если выполнение было успешным, в противном случае — выполняется откат изменений).
Выполнение операторов внутри транзакции происходит быстрее, поскольку операции начала и завершения транзакции требуют значительных ресурсов процессора и диска. Выполнение нескольких операторов внутри транзакции также полезно для обеспечения согласованности при внесении нескольких связанных изменений: в других сессиях не будут видны промежуточные состояния, когда выполнены не все связанные обновления.
Если указан уровень изоляции, режим чтения/записи или откладываемый (deferrable) режим, новая транзакция имеет эти характеристики, как если бы была выполнена команда SET TRANSACTION.
Параметры
| Параметр | Описание |
|---|---|
WORK |
Необязательные ключевые слова. Не оказывают никакого влияния |
SERIALIZABLE |
Стандарт SQL определяет четыре уровня изоляции транзакций:
|
Примечания
START TRANSACTION имеет ту же функциональность, что и BEGIN.
Используйте COMMIT или ROLLBACK для завершения блока транзакции.
Если выполнить команду BEGIN внутри блока транзакции, будет выведено предупреждение.
Состояние транзакции при этом не изменяется.
Чтобы вложить транзакции внутри блока транзакции, используйте точки сохранения (см. SAVEPOINT).
Примеры
Начать блок транзакции:
BEGIN;
Начать блок транзакции с уровнем изоляции REPEATABLE READ:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Совместимость
BEGIN — это расширение языка Greengage DB.
Оно эквивалентно стандартной SQL-команде START TRANSACTION.
Режим транзакции DEFERRABLE — это расширение языка Greengage DB.
Поскольку ключевое слово BEGIN используется для другой цели во встроенном (embedded) SQL, при портировании приложений баз данных уделяйте особое внимание семантике транзакций.