使用 STOP VIOLATIONS TABLE 语句来删除目标表、它的违反表与它的诊断表
之间的关联。此语句是对 SQL 的 ANSI/ISO 标准的扩展。
语法
元素
描述
限制
语法
owner table 的所有者
必须拥有该表
所有者名称
table 与要删除的违反表和诊断表相
关联的目标表的名称。不存在
缺省值。
必须是与违反表和诊断
表相关联的本地表
标识符
用法
STOP VIOLATIONS TABLE 语句删除目标表、违反表与诊断表之间的关联。在您
发出此语句之后,以前的违反表和诊断表继续存在,但不再作为该目标表的违反
表和诊断表。现在,它们有常规的数据库表的状态,而不是目标表的违反表和诊
断表。您必须发出 DROP TABLE 语句来显式地删除这两个表。
当 DML 操作(INSERT、DELETE 或 UPDATE)对目标表的行造成数据完整性
违反时,不再将不符合的行过滤到以前的违反表,且不将关于数据完整性违反的
诊断信息放置到以前的诊断表中。
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1106
停止违反表和诊断表的示例
假设名为 cust_subset 的目标表与名为 cust_subset_vio 的违反表相关联,且
与名为 cust_subset_dia 的诊断表相关联。要删除目标表与违反表和诊断表之间
的关联,请输入下列语句:
STOP VIOLATIONS TABLE FOR cust_subset;
这删除已注册了以前的相关联的 sysviolations 系统目录表中的行。对在目标
cust_subset 表上的随后的 DML 操作将不再导致数据库服务器将关于不符合的行
的信息插入到它以前的违反表和诊断表内。
删除违反表和诊断表的示例
在您在前面的示例中执行 STOP VIOLATIONS TABLE 语句之后,
cust_subset_vio 和 cust_subset_dia 表继续存在,但不再与 cust_subset 表
相关联。相反现在它们有常规的数据库表的状态。要删除这两个表,请输入下列
语句:
DROP TABLE cust_subset_vio;
DROP TABLE cust_subset_dia;
如果您先前已经发出了的不带有 RESTRICT 关键字的 DROP TABLE 语句成功
地删除 cust_subset 表,则上面的语句可能并不必要,因为以级联模式删除目标
表会隐式地删除任何相关联的违反表和诊断表。
停止违反表所需要的权限
要为给定的目标表停止违反表或诊断表,您必须满足下列要求之一:
您在该数据库上必须有 DBA 权限。
您必须是目标表的所有者,且在数据库上有 Resource 权限。
您在目标表上必须有 Alter 权限,且在数据库上有 Resource 权限。