top
Loading...
13.4.7.2.XA事務狀態
13.4.7.2. XA事務狀態
XA事務在以下狀態下進展:

1.    使用XA START來啟動一個XA事務,并把它放入ACTIVE狀態。

2.    對于一個ACTIVE XA事務,發布構成事務的SQL語句,然后發布一個XA END語句。XA END把事務放入IDLE狀態。

3.    對于一個IDLE XA事務,您可以發布一個XA PREPARE語句或一個XA COMMITONE PHASE語句:

·         XA PREPARE把事務放入PREPARED狀態。在此點上的XA RECOVER語句將在其輸出中包括事務的xid值,因為XA RECOVER會列出處于PREPARED狀態的所有XA事務。

·         XA COMMITONE PHASE用于預備和提交事務。xid值將不會被XA RECOVER列出,因為事務終止。

4.    對于一個PREPARED XA事務,您可以發布一個XA COMMIT語句來提交和終止事務,或者發布XA ROLLBACK來回滾并終止事務。

下面是一個簡單的XA事務,該事務把一行作為一個全局事務的一部分插入一個表中。

mysql> XA START 'xatest';
Query OK, 0 rows affected (0.00 sec)
 
mysql> INSERT INTO mytable (i) VALUES(10);
Query OK, 1 row affected (0.04 sec)
 
mysql> XA END 'xatest';
Query OK, 0 rows affected (0.00 sec)
 
mysql> XA PREPARE 'xatest';
Query OK, 0 rows affected (0.00 sec)
 
mysql> XA COMMIT 'xatest';
Query OK, 0 rows affected (0.00 sec)

根據一個給定的客戶端連接的語境,XA事務和本地(非XA)事務互相排斥。舉例說明,如果已經發布了XA START來開始一項XA事務,則本地事務不會被啟動,直到XA事務已經被提交或被 回滾為止。相反的,如果已經使用START TRANSACTION啟動一個本地事務,則XA語句不能被使用,直到該事務被提交或被 回滾為止。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html
北斗有巢氏 有巢氏北斗