START VIOLATIONS TABLE 语句的示例

下列示例展示执行 START VIOLATIONS TABLE 语句的不同方式。

启动违反表和诊断表而不指定它们的名称

要为演示数据库中名为 customer 的目标表启动违反表和诊断表,请输入下列语句:
START VIOLATIONS TABLE FOR customer;
由于您的 START VIOLATIONS TABLE 语句不包括 USING 子句,因此违反表的缺省名称为 customer_vio,诊断表的缺省名称为 customer_diacustomer_vio 表包括下列列:
customer_num
          fname
          lname
          company
          address1
          address2
          city
          state
          zipcode
          phone
          gbasedbt_tupleid
          gbasedbt_optype
          gbasedbt_recowner

customer_vio 表与 customer 表有相同的表定义,除了 customer_vio 表有包含关于导致了坏行的操作的信息的三个附加列之外。

customer_dia 表包括下列列:
gbasedbt_tupleid
          objtype
          objowner
          objname

对于目标表,此列的列表展示诊断表与违反表之间的重要差异。尽管对于目标表中的每列,违约表都有相匹配的列,但诊断表的列不依赖于目标表的模式。由任何 START VIOLATIONS TABLE 语句创建的诊断表始终有以上列表中的四列,带有相同的列名称和数据类型。

启动违反表和诊断表并指定它们的名称

下列语句为名为 items 的目标表启动违反表和诊断表。USING 子句为违反表和诊断表声明显式的名称。违反表将命名为 exceptions,诊断表将命名为 reasons
START VIOLATIONS TABLE FOR items
          USING exceptions, reasons;

指定诊断表中的最大行数

下列语句为名为 orders 的目标表启动违反表和诊断表。当在目标表上执行诸如 INSERT、MERGE 或 SET Database Object Mode 之类的单个语句时,MAX ROWS 子句指定可插入到 orders_dia 诊断表内的最大行数。
START VIOLATIONS TABLE FOR orders MAX ROWS 50000;

如果您未为 START VIOLATIONS TABLE 语句中的 MAX ROWS 指定值,则对诊断表中的行数没有缺省的限制,除了可用的磁盘空间之外。

MAX ROWS 子句仅对于表函数在其中作为诊断表的操作限定行的数目。