南大通用GBase8s 常用SQL语句(七十七)

南大通用GBase8s 常用SQL语句(七十七)

使用 WITH AUDIT 子句

使用 WITH AUDIT 关键字创建表,如果启用了选择性行级别,则该表将包含在行级别升级的表的集合中。

如果创建带有 WITH AUDIT 子句的表,则当选择性行级别审计启动时,表中行级别审计事件会重新排序。在本表上应用 WITH AUDIT 属性不会启用选择性行级别审计。此审计类型在使用 onaudit -R 命令将 adtcfg 文件的 ADTROWS 参数设置成 1 或 2 时启用。

您必须具有 RESOURCE 或 DBA 权限才能运行带有 WITH AUDIT 子句的 CREATE TABLE 语句。

使用 WITH CRCOLS 选项

使用 WITH CRCOLS 关键字创建两个影子列,Enterprise Replication 将它们用于冲突解决。第一列 cdrserver 中包含最近发生修改的数据库服务器的标识。第二列 cdrtime 中包含最近一次修改的时间戳记。必须在您可以使用时间戳记或 UDR 冲突解决之前添加这两列。这两列是隐藏的影子列,因为它们不能被索引且不能在系统目录表中查看。

对于大多数数据库操作,cdrserver 和 cdrtime 列都是隐藏的。例如,如果您在创建表时包含了 WITH CRCOLS 关键字,则 cdrserver 和 cdrtime 列将有以下的行为:

  1. 当查询时指定星号(*)作为投影列表时(如下列语句所示),它们不会返回:

SELECT * FROM tablename;

  1. 当您询问有关表中列的信息时,它们并不出现在 DB-Access 中。
  2. 它们并不包含在 tablename 的 systables 系统目录表条目的列数目(ncols)中。

要查看 cdrserver 和 cdrtime 的内容,请在 SELECT 语句的投影列表中显式指定这些列,如以下示例所示:

SELECT cdrserver, cdrtime FROM tablename;

有关如何使用这些选项的更多信息,请参阅 GBase 8s Enterprise Replication 指南

使用 WITH ERKEY 关键字

使用 WITH ERKEY 关键字创建 ERKEY 影子列,它可以被 Enterprise Replication 用作复制键。

ERKEY 影子列(ifx_erkey_1 、ifx_erkey_2 和 ifx_erkey_3)是可见的影子列,因为它们可以被索引且能在系统目录表中查看。在创建 ERKEY 影子列之后,会在使用这些列的表上创建新的唯一索引和唯一约束。Enterprise Replication 使用此索引作为复制键。

对于大多数数据库操作,ERKEY 列是隐藏的。例如,如果您在创建表时包含了 WITH ERKEY 关键字,则 ERKEY 列具有以下行为:

  1. 当查询时指定星号(*)作为投影列表时(如下列语句所示),它们不会返回:

SELECT * FROM tablename;

  1. 当您询问有关表中列的信息时,它们并不出现在 DB-Access 中。
  2. 它们并不包含在 tablename 的 systables 系统目录表条目的列数目(ncols)中。

要查看 ERKEY 列的内容,请在 SELECT 语句的投影列表中显式指定这些列,如以下示例所示:

SELECT ifx_erkey_1, ifx_erkey_2, ifx_erkey_3 FROM customer;

示例

在以下示例中,ERKEY 影子列添加到 customer 表中:

CREATE TABLE customer (id INT) WITH ERKEY;

使用 WITH REPLCHECK 关键字

使用 WITH REPLCHECK 关键字创建 ifx_replcheck 影子列,Enterprise Replication 将该列用于一致性检查。

ifx_replcheck 列是可见的影子列,因为它们可以被索引且能在系统目录表中查看。创建 ifx_replcheck 影子列之后,必须在主键和 ifx_replcheck 列上创建唯一索引。ifx_replcheck 影子列必须是该索引中的最后一列。Enterprise Replication 使用此索引加速一致性检查。

对于大多数数据库操作,ifx_replcheck 列是隐藏的。例如,如果创建表时使用了 WITH REPLCHECK 关键字,则 ifx_replcheck 列包含以下行为:

  1. 当查询时指定星号(*)作为投影列表时(如下列语句所示),它们不会返回:

SELECT * FROM tablename;

  1. 当您询问有关表中列的信息时,它们并不出现在 DB-Access 中。
  2. 它们并不包含在 tablename 的 systables 系统目录表条目的列数目(ncols)中。

要查看 ifx_replcheck 列的内容,请在 SELECT 语句的投影列表中显式指定这些列,如以下示例所示:

SELECT ifx_replcheck FROM customer;

示例

在下列示例中,将 ifx_replcheck 影子列添加到 customer 表中:

CREATE TABLE customer (id int) WITH REPLCHECK;

你可能感兴趣的:(sql,database,数据库)