Spec-Zone .ru
спецификации, руководства, описания, API

13.3.7.1. Синтаксис SQL Транзакции XA

Чтобы выполнить транзакции XA в MySQL, используйте следующие операторы:

XA {START|BEGIN} xid [JOIN|RESUME]XA END xid [SUSPEND [FOR MIGRATE]]XA PREPARE xidXA COMMIT xid [ONE PHASE]XA ROLLBACK xidXA RECOVER

Для XA START, JOIN и RESUME пункты не поддерживаются.

Для XA END SUSPEND [FOR MIGRATE] пункт не поддерживается.

Каждый оператор XA начинается XA ключевое слово, и большинство из них требуют xid значение. xid идентификатор транзакции XA. Это указывает, какой транзакции оператор применяется к. xid значения предоставляются клиентом, или сгенерировались сервером MySQL. xid значение имеет от одной до трех частей:

xid: gtrid [, bqual [, formatID ]]

gtrid глобальный идентификатор транзакции, bqual спецификатор ответвления, и formatID число, которое идентифицирует формат, используемый gtrid и bqual значения. Как обозначено синтаксисом, bqual и formatID являются дополнительными. Значение по умолчанию bqual значение '' если не данный. Значение по умолчанию formatID значение 1 если не дано.

gtrid и bqual должны быть строковые литералы, каждый до 64 байтов (не символы) долго. gtrid и bqual может быть определен несколькими способами. Можно использовать заключенную в кавычки строку ('ab'), шестнадцатеричная строка (0x6162, X'ab'), или битовое значение (b'nnnn').

formatID целое без знака.

gtrid и bqual значения интерпретируются в байтах базовыми подпрограммами поддержки XA сервера MySQL. Однако, в то время как SQL-оператор, содержащий оператор XA, анализируется, работы сервера с некоторым определенным набором символов. Чтобы быть безопасным, записать gtrid и bqual как шестнадцатеричные строки.

xid значения обычно сгенерированы Менеджером транзакций. Значения, сгенерированные одним ТМ, должны отличаться от значений, сгенерированных другими ТМ. Данный ТМ должен быть в состоянии распознать свое собственное xid значения в списке значений, возвращенных XA RECOVER оператор.

XA START xid запускает транзакцию XA с данного xid значение. У каждой транзакции XA должно быть уникальное xid значение, таким образом, значение не должно в настоящий момент использоваться другой транзакцией XA. Уникальность оценивается, используя gtrid и bqual значения. Весь после операторов XA для транзакции XA должен быть определен, используя то же самое xid оцените как поданное XA START оператор. Если Вы используете какой-либо из тех операторов, но определяете xid значение, которое не соответствует некоторой существующей транзакции XA, ошибка, происходит.

Одна или более транзакций XA могут быть частью той же самой глобальной транзакции. Все транзакции XA в пределах данной глобальной транзакции должны использовать то же самое gtrid значение в xid значение. Поэтому gtrid значения должны быть глобально уникальными так, чтобы не было никакой неоднозначности, о которой глобальной транзакции данная транзакция XA является частью. bqual часть xid значение должно отличаться для каждой транзакции XA в пределах глобальной транзакции. (Требование это bqual значения отличаться являются ограничением текущей реализации MySQL XA. Это не часть спецификации XA.)

XA RECOVER оператор возвращает информацию для тех транзакций XA на сервере MySQL, которые находятся в PREPARED состояние. (См. Раздел 13.3.7.2, "государства Транзакции XA".) Вывод включает строку для каждой такой транзакции XA на сервере, независимо от который клиент, запущенный это.

XA RECOVER выходные строки похожи на это (для примера xid значение, состоящее из частей 'abc', 'def', и 7):

mysql> XA RECOVER;+----------+--------------+--------------+--------+| formatID | gtrid_length | bqual_length | data   |+----------+--------------+--------------+--------+|        7 |            3 |            3 | abcdef |+----------+--------------+--------------+--------+

У выходных столбцов есть следующие значения: