с Firebird 2.5 ваша версия: любая

SET TRANSACTION

Версии сервера

2.53.04.05.06.0
ДаДаДаДаДа

Доступно в

DSQL, ESQL

Формат

SET TRANSACTION
   [NAME tr_name]
   [<tr_option> ...]

<tr_option> ::=
     READ {ONLY | WRITE}
   | [NO] WAIT
   | [ISOLATION LEVEL] <isolation level>
   | NO AUTO UNDO
   | AUTO RELEASE TEMP BLOBID
   | RESTART REQUESTS
   | IGNORE LIMBO
   | LOCK TIMEOUT seconds
   | AUTO COMMIT
   | RESERVING <tables>
   | USING <dbhandles>

<isolation level> ::=
    SNAPSHOT [TABLE [STABILITY]]
  | SNAPSHOT AT NUMBER snapshot_number
  | READ COMMITTED [{[NO] RECORD_VERSION | READ CONSISTENCY}]

<tables> ::= <table_spec> [, <table_spec> ...]

<table_spec> ::= tablename [, tablename ...]
  [FOR [SHARED | PROTECTED] {READ | WRITE}]

<dbhandles> ::= dbhandle [, dbhandle ...]

Описание

Оператор SET TRANSACTION задаёт параметры транзакции и стартует её. Старт транзакции осуществляется только клиентскими приложениями, но не сервером (за исключением автономных транзакций и некоторых фоновых системных потоков, например sweep).

Все предложения оператора необязательны. Если не задано ни одного, транзакция стартует со значениями по умолчанию: READ WRITE, WAIT, ISOLATION LEVEL SNAPSHOT.

Основные характеристики транзакции:

Необязательное предложение NAME задаёт имя транзакции и доступно только в ESQL; оно позволяет запускать несколько активных транзакций в одном приложении (требуется одноимённая переменная базового языка). Без NAME оператор применяется к транзакции по умолчанию. Предложение USING (список хендлов баз данных, к которым транзакция может получить доступ) также доступно только в ESQL.

Уровень SNAPSHOT AT NUMBER snapshot_number позволяет разделить снимок базы данных другой транзакции с указанным номером. Номер текущей транзакции доступен через контекстную переменную CURRENT_TRANSACTION.

Пример

-- Транзакция только для чтения с уровнем изоляции READ COMMITTED
SET TRANSACTION
   READ ONLY
   WAIT
   ISOLATION LEVEL READ COMMITTED RECORD_VERSION;

-- Чтение/запись, ожидание не более 10 секунд
-- и резервирование таблицы для защищённой записи
SET TRANSACTION
   READ WRITE
   WAIT LOCK TIMEOUT 10
   ISOLATION LEVEL SNAPSHOT
   RESERVING ORDERS FOR PROTECTED WRITE;

См. также

COMMIT, ROLLBACK, SAVEPOINT, Таблицы мониторинга

Источник

Руководство по языку SQL СУБД Firebird 5.0 (sim1984 / ibase.ru, Public Documentation License)

Обсуждение