mysql 的事物状态_mysql8 参考手册-- XA事务状态

XA事务通过以下状态进行:

使用XA START启动一个XA事务,并把它的 ACTIVE状态。

对于ACTIVEXA事务,发出组成该事务的SQL语句,然后发出一条XA END语句。 XA END将交易置于 IDLE状态。

对于IDLEXA事务,可以发出一个XA PREPARE语句或一个XA COMMIT ... ONE PHASE语句:

XA PREPARE将交易置于 PREPARED状态。此时,一条 XA RECOVER语句将xid在其输出中包含该事务的值,因为它将 XA RECOVER列出该PREPARED状态下的所有XA事务。

XA COMMIT ... ONE PHASE准备并提交事务。由于事务终止xid,XA RECOVER因此不会列出该 值。

对于PREPAREDXA事务,您可以发出一条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语句。

如果处于XA事务ACTIVE状态,则不能发出任何导致隐式提交的语句。这将违反XA合同,因为您无法回退XA交易。如果您尝试执行这样的语句,则会收到以下错误:

ERROR 1399 (XAE07): XAER_RMFAIL: The command cannot be executed

when global transaction is in the ACTIVE state

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值