START TRANSACTION

Запускает блок транзакции.

Синтаксис

START TRANSACTION [transaction_mode] [READ WRITE | READ ONLY]

Где transaction_mode:

ISOLATION LEVEL {SERIALIZABLE | READ COMMITTED | READ UNCOMMITTED}

Описание

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

Параметры

READ UNCOMMITTED

READ COMMITTED

REPEATABLE READ

SERIALIZABLE

  • SQL-стандарт определяет четыре уровня изоляции транзакций: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ и SERIALIZABLE.
  • READ UNCOMMITTED позволяет транзакциям просматривать изменения, сделанные параллельными незафиксированными транзакциями. В базе данных YMatrix это невозможно, поэтому READ UNCOMMITTED эквивалентен READ COMMITTED.
  • READ COMMITTED — уровень изоляции по умолчанию в базе данных YMatrix, гарантирующий, что операторы могут видеть только строки, зафиксированные до их начала. Если другая параллельная транзакция была зафиксирована после первого выполнения оператора, один и тот же оператор, выполненный дважды в одной транзакции, может давать разные результаты.
  • Уровень изоляции REPEATABLE READ гарантирует, что транзакции могут видеть только строки, зафиксированные до начала транзакции. REPEATABLE READ — самый строгий уровень изоляции, поддерживаемый базами данных YMatrix. Из-за возможных ошибок сериализации приложения, использующие уровень изоляции REPEATABLE READ, должны быть готовы повторно выполнять транзакцию.
  • Уровень изоляции SERIALIZABLE гарантирует, что выполнение нескольких параллельных транзакций имеет такой же эффект, как если бы они выполнялись последовательно. Если указано значение SERIALIZABLE, база данных YMatrix автоматически переключается на уровень REPEATABLE READ.

READ WRITE

READ ONLY

  • Определяют, является ли транзакция транзакцией чтения/записи или только для чтения. По умолчанию используется режим чтения/записи. Когда транзакция помечена как только для чтения, следующие команды SQL запрещены: INSERT, UPDATE, DELETE и COPY FROM (если таблица, в которую производится запись, не является временной); все команды CREATE, ALTER и DROP; GRANT, REVOKE, TRUNCATE; а также EXPLAIN ANALYZE и EXECUTE, если они предназначены для выполнения любых из перечисленных выше команд.

Пример

Запуск блока транзакции:

START TRANSACTION;

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

Согласно стандарту, для начала блока транзакции не обязательно использовать START TRANSACTION: любой SQL-оператор неявно начинает блок. Поведение базы данных YMatrix можно рассматривать как неявное выполнение COMMIT после каждой команды, которая не следует за START TRANSACTION (или BEGIN), поэтому такое поведение часто называют «автофиксацией». Другие системы реляционных баз данных могут предоставлять аналогичный режим автоматической фиксации.

Смотрите также

BEGIN, SET TRANSACTION