MySQL 内で XA トランザクションを行うには、次のステートメントを利用してください。
XA {START|BEGIN} xid [JOIN|RESUME]
XA END xid [SUSPEND [FOR MIGRATE]]
XA PREPARE xid
XA COMMIT xid [ONE PHASE]
XA ROLLBACK xid
XA RECOVER
          XA
          START
          では、JOIN および
          RESUME
          節はサポートされていません。
        
          XA
          END
          に対しては、SUSPEND [FOR
          MIGRATE] 節はサポートされていません。
        
          各 XA ステートメントは
          XA
          キーワードで始まり、それらのほとんどが
          xid
          値を必要とします。xid は
          XA
          トランザクション識別子です。このステートメントがどのトランザクションに適用されるかを示します。xid
          値は、クライアントによって指定されるか、または
          MySQL
          サーバーによって生成されます。xid
          値は 1 つから 3 つの部分を持っています。
        
xid:gtrid[,bqual[,formatID]]
          gtrid
          はグローバルトランザクション識別子、bqual
          はブランチ修飾子、そして
          formatID は
          gtrid と
          bqual
          値によって利用されるフォーマットを識別する数値です。構文によって指示されているように、bqual
          と formatID
          は任意です。デフォルトの
          bqual
          値は、指示されていないかぎり
          ''
          です。デフォルトの
          formatID
          値は、指示されていないかぎり 1 です。
        
          gtrid と
          bqual
          は文字列直定数である必要があり、それぞれが最長
          64 バイトです
          (文字数ではない)。gtrid と
          bqual
          の指定方法は、いくつかあります。引用された文字列
          ('ab')、16 進数列
          (0x6162、X'ab')、またはビット値
          (b')
          を利用することができます。
        nnnn'
          formatID
          は符号なしの整数です。
        
          gtrid と
          bqual 値は、MySQL
          サーバーに内在する XA
          サポートルーチンによって、バイトで解釈されます。しかし、XA
          ステートメントを含む SQL
          ステートメントが解析されると、サーバーはいくつかの特定のキャラクタセットと共に機能します。安全のために、gtrid
          と bqual を 16
          進数列として書いてください。
        
          xid
          値は一般的にトランザクションマネージャーによって生成されます。ある
          TM によって生成された値は、別の TM
          によって生成された値とは異なります。規定の
          TM は
          XA
          RECOVER
          ステートメントによって返された値のリスト内にある、それ自身の
          xid
          値を識別できなければいけません。
        
          XASTARTは、規定の
          xidxid 値を利用して XA
          トランザクションをスタートします。各 XA
          トランザクションは固有の
          xid
          値を持つ必要があるので、その値は同時に XA
          トランザクションによって利用されてはいけません。一意性は
          gtrid と
          bqual
          値を利用して評価されます。XA
          トランザクションに続くすべての XA
          ステートメントは、XA
          START
          ステートメント内で規定されているように、同じ
          xid
          値を利用して指定されなければいけません。もし、それらのステートメントのどれかを利用しながら、既存
          XA トランザクションに対応しない
          xid
          値を指定すると、エラーが起こります。
        
          ひとつ、または複数の XA
          トランザクションは同じグローバルトランザクションの一部になることができます。規定のグローバルトランザクション内のすべての
          XA
          トランザクションは、xid
          値内で同じ gtrid
          値を利用しなければいけません。この理由により、規定の
          XA
          トランザクションがどのグローバルトランザクションの一部であるかをはっきりさせるために、gtrid
          値はグローバルに一意である必要があります。xid
          値の bqual
          部は、グローバルトランザクションの中で、各
          XA
          トランザクションに対して異なっている必要があります。bqual
          値が異なっている必要があるという要求は、現在の
          MySQL XA
          インプリメンテーションの制限です。これは
          XA 仕様の一部ではありません)。
        
          XA
          RECOVER
          ステートメントは、PREPARED
          状態にある MySQL サーバー上の XA
          トランザクションに情報を返します。詳細は、項8.4.7.2. 「XA トランザクションの状態」
          を参照してください。出力は、どのクライアントがスタートしたかに関わらず、サーバー上の
          XA トランザクションなどの行を含みます。
        
          XA
          RECOVER
          出力行はこのような形になります。'abc'、'def'、そして
          7
          部分で成り立っている xid
          値の例):
        
mysql> XA RECOVER;
+----------+--------------+--------------+--------+
| formatID | gtrid_length | bqual_length | data   |
+----------+--------------+--------------+--------+
|        7 |            3 |            3 | abcdef |
+----------+--------------+--------------+--------+
出力カラムは次の意味を持っています。
              formatID
              はトランザクション xid
              の formatID 部です。
            
              gtrid_length は
              xid の
              gtrid
              部の、バイトでの長さです。
            
              bqual_length は
              xid の
              bqual
              部の、バイトでの長さです。
            
              data は
              xid の
              gtrid と
              bqual 部の連結です。
            

