Введение в стандарты языка баз данных SQL

Управление транзакциями


На неформальном уровне мы кратко обсудили возможности управления транзакциями, поддерживаемые в стандарте SQL/92, в п.3.1.4. В этом разделе будут приведены синтаксические определения операторов управления транзакциями и соответствующие пояснения.

3.7.1. Оператор установки параметров транзакции

Оператор SETTRANSACTION служит для задания параметров следующей транзакции для данного SQL-агента. Оператор определяется следующими синтаксическими правилами:

<set transaction statement> ::= SET TRANSACTION <transaction mode> [ { <comma> <transaction mode> }... ] <transaction mode> ::= <isolation level> | <transaction access mode> | <diagnostics size> <isolation level> ::= ISOLATION LEVEL <level of isolation> <level of isolation> ::= READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE <transaction access mode> ::= READ ONLY | READ WRITE <diagnostics size> ::= DIAGNOSTICS SIZE <number of conditions> <number of conditions> ::= <simple value specification>

Пояснения:

  • Если уровень изоляции не специфицирован, то неявно полагается заданным уровень изоляции SERIALIZABLE.
  • Если специфицирован режим доступа READWRITE, то уровень изоляции не должен быть READUNCOMMITTED.
  • Если неспецифицирован режим доступа транзакции и указан уровень изоляции READUNCOMMITTED, то неявно полагается заданным режим доступа READONLY; в противном случае неявно полагается заданным режим доступа READWRITE.
  • Попытка выполнения оператора SETTRANSACTION в активной транзакции приводит к возбуждению исключительной ситуации.
  • Пусть TXN обозначает следующую транзакцию данного SQL-агента.
  • Режим доступа TXN устанавливается в соответствии со спецификациями, заданными в операторе SETTRANSACTION.
  • Уровень изоляции TXN устанавливается в зависимости от реализации, но таким образом, чтобы не проявлялись эффекты, которые не должны проявляться на уровне изоляции, явно или неявно задаваемом оператором SETTRANSACTION.
  • Размер области диагностики TXN устанавливается в соответствии с параметром <numberofconditions>, если он задан; в противном случае размер области диагностики зависит от реализации, но должен быть не меньше того, который был бы выделен при явном задании числа условий равного единице.


  • Содержание раздела