mysql 事务 sql语句,MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务状态

XA 事务状态

XA 事务进程包含以下状态:

使用 XA START 启动 XA 事务并将其置于 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 事务。

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

对于 PREPARED XA 事务,可以执行 XA COMMIT 语句来提交和终止事务,或者执行 XA ROLLBACK 来回滚和终止事务。

下面是一个简单的 XA 事务,它向表中插入一行,是全局事务的一部分:

1.mysql> XA START ‘xatest‘;

2.Query OK, 0 rows affected (0.00 sec)

3.

4. mysql> INSERT INTO mytable (i) VALUES(10);

5. Query OK, 1 row affected (0.04 sec)

6.

7. mysql> XA END ‘xatest‘;

8. Query OK, 0 rows affected (0.00 sec)

9.

10. mysql> XA PREPARE ‘xatest‘;

11. Query OK, 0 rows affected (0.00 sec)

12.

13. mysql> XA COMMIT ‘xatest‘;

14. Query OK, 0 rows affected (0.00 sec)

在给定客户端连接的上下文中,XA 事务和本地(非XA)事务是互斥的。例如,如果执行 XA START 开始 XA 事务,则在 XA 事务被提交或回滚之前,本地事务无法启动。相反,如果本地事务已经用 START TRANSACTION 语句启动,那么在事务被提交或回滚之前,不能使用 XA 语句。

如果 XA 事务处于 ACTIVE 状态,则不能执行任何导致隐式提交的语句。这将违反 XA 契约,因为无法回滚这个 XA 事务。尝试执行这样的语句会引发以下错误:

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

2.when global transaction is in the ACTIVE state

官方网址:

https://dev.mysql.com/doc/refman/8.0/en/xa-states.html

MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务状态

标签:com   test   art   mit   and   ofo   执行   not   tar

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://blog.51cto.com/15023289/2559525

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值