暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

南大通用GBase8s 常用SQL语句(110)

刚刚 好 2022-03-21
348


1.1 CREATE XADATASOURCE 语句

使用 CREATE XADATASOURCE 语句创建新的兼容 XA 的数据源并为其在 sysxadatasources 系统目录表中创建一个条目。该语句是 SQL ANSI/ISO 标准的扩展。

语法

元素

描述

限制

语法

xa_source 

此处为新的 XA 数据源声明的名称

sysxadatasources 中的 XA 数据源名称中必须是唯一的

标识符

xa_type

现有 XA 数据源类型的名称

必须已经存在于 sysxasourcetypes 系统目录表的数据库中

标识符

用法

符合 XA 标准的数据源是符合 X/Open DTP XA 标准的外部数据源,用于管理事务管理器和资源管理器之间的交互。要在数据库中注册符合 XA 的数据源,需要执行以下两条 SQL 语句:

l 首先通过使用 CREATE XADATASOURCE 语句创建一个或多个符合 XA 的数据类型。

l 然后用 CREATE XADATASOURCE 语句创建一个或多个符合 XA 数据源的实例。

您可以使用两阶段提交协议将 XA 数据源中的事务与 GBase 8s 事务集成,以确保事务在多个数据库之间一致提交或回滚,并在同一全局事务中管理多个外部 XA 数据源。

高可用集群的辅助服务器上不支持 CREATE XADATASOURCE 语句。

任何用户都可以根据数据库是否符合 ANSI 的状态创建遵循所有者命名规则标准的 XA 数据源。只有使用事务日志记录的数据库才支持 X/Open DTP XA 标准。

如果您包含了可选的 IF NOT EXISTS 关键字,则如果它指定名称的 XA 数据源已在当前数据库中注册,则数据库服务器不会执行任何操作(而不是向应用程序发送异常)。

XA 数据源类型和 XA 数据源实例都会指定到一个数据库。要支持分布式事务,必须在多个与外部 XA 数据源交互的数据库中创建它们。

以下语句创建一个新的 XA 数据源实例,它的名称为 gbasedbt.NewYork ,是 gbasedbt.MQSeries 类别。

CREATE XADATASOURCE gbasedbt.NewYork USING gbasedbt.MQSeries;

SQL 语句在 XA 环境中无效

当您在尝试在 X/Open 分布式事务处理环境中执行以下任何语句时, GBase 8s 数据库服务器发出错误 -701 :

l CLOSE DATABASE

l CREATE DATABASE

l DROP DATABASE

l SET LOG

l SAVEPOINT

l RELEASE SAVEPOINT

l ROLLBACK TO SAVEPOINT

XA 环境中,您可以在 xa_open 调用指定当前数据库后执行一个 DATABASE 语句。但是,当选择了该数据库后,在同一会话中不能有其它 DATABASE 语句。如果您创建执行第二个 DATABASE 语句,DATABASE 语句发生错误 -701 并失败。

1.2 CREATE XADATASOURCE TYPE 语句

使用 CREATE XADATASOURCE TYPE 语句创建新的符合 XA 的数据源类型,并在 sysxasourcetypes 系统目录表中为其创建一个条目。该语句是 SQL ANSI/ISO 标准的扩展。

语法

 

元素

描述

限制

语法

xa_type 

在此处声明新的 XA 数据源类型的名称

sysxasourcetypes 系统目录表中的 XA 数据源类型名称中必须是唯一的

标识符 

CREATE XADATASOURCE TYPE 语句向数据库中添加一个符合 XA 的数据源类型。

高可用集群的辅助服务器上不支持 CREATE XADATASOURCE TYPE 语句。

任何用户都可以根据数据库是否符合 ANSI 的状态创建遵循所有者命名规则标准的 XA 数据源类型。只有使用事务日志记录的数据库才支持 X/Open DTP XA 标准。

要创建数据源类型,您必须声明它的名称并指定 purpose functions  purpose values 作为 XA 源类型的属性。源类型名称后面的大多数的选项将 sysxasourcetypes 系统目录表中的列与 UDR 相关联。

如果您包含了可选的 IF NOT EXISTS 关键字,则如果它指定名称的 XA 数据源类型名称已在当前数据库中注册,则数据库服务器不会执行任何操作(而不是向应用程序发送异常)。

XA 数据源类型和 XA 数据源实例都会指定到一个数据库。要支持分布式事务,必须在多个与外部 XA 数据源交互的数据库中创建它们。

以下语句创建新的 XA 数据源类型,名为 MQSeries® ,被用户 gbasedbt 所有。

CREATE XADATASOURCE TYPE 'gbasedbt'.MQSeries(

          xa_flags    = 1,

          xa_version  = 0,

          xa_open     = gbasedbt.mqseries_open,

          xa_close    = gbasedbt.mqseries_close,

          xa_start    = gbasedbt.mqseries_start,

          xa_end      = gbasedbt.mqseries_end,

          xa_rollback = gbasedbt.mqseries_rollback,

          xa_prepare  = gbasedbt.mqseries_prepare,

          xa_commit   = gbasedbt.mqseries_commit,

          xa_recover  = gbasedbt.mqseries_recover,

          xa_forget   = gbasedbt.mqseries_forget,

          xa_complete = gbasedbt.mqseries_complete);

您需要为上述列出的选项提供一个值或 UDR 名称,但是您列出它们的顺序并不重要。(在此示例中目标选项的顺序与 sysxasourcetypes 系统目录表中列名称的顺序相对应。)

此语句成功执行后,您创建了 gbasedbt.MQSeries 类型的实例。以下语句创建了新的实例 gbasedbt.MenloPark ,它符合 XA 数据源类型 gbasedbt.MQSeries 

CREATE XADATASOURCE gbasedbt.MenloPark USING gbasedbt.MQSeries;

 

 

 

 

最后修改时间:2022-03-21 13:33:58
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论