官网地址:https://dev.mysql.com/doc/refman/5.7/en/xa-states.html
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
通过以下国家进行的一项航空航天器交易:
-
使用XA START 启动一个xd事务并将其放入
ACTIVE
国家。 -
作为一个
ACTIVE
XA事务,发布构成事务的SQL语句,然后发布一个XA END 声明。 XA END 把交易放在IDLE
国家。 -
作为一个
IDLE
XA事务,您可以发布一个XA PREPARE 声明或声明XA COMMIT ... ONE PHASE
声明:-
XA PREPARE 把交易放在
PREPARED
国家。安 XA RECOVER 此时的声明包括交易的xid
它的输出值,因为 XA RECOVER 列出所有在PREPARED
国家。 -
XA COMMIT ... ONE PHASE
准备并提交事务。…xid
价值不列于 XA RECOVER 因为交易终止。
-
-
作为一个
PREPARED
XA事务,您可以发布一个XA COMMIT 提交和终止交易的声明,或 XA ROLLBACK 回滚并终止事务。
下面是一个简单的xd事务,它将行插入到表中,作为全局事务的一部分:
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 已经发出了要开始一个DB2事务的本地事务,在已提交或回滚该事务之前,无法启动该本地事务。相反,如果本地交易已经开始 START TRANSACTION ,在事务被提交或回滚之前,不能使用xa语句。
如果一个x事务在ACTIVE
声明,您不能发布导致隐式提交的任何语句。这将会违反xd合同,因为您无法回滚xd事务。如果您试图执行这样的语句,会出现以下错误:
ERROR 1399 (XAE07): XAER_RMFAIL: The command cannot be executed
when global transaction is in the ACTIVE state