SYSVIOLATIONS

sysviolations 系统目录表存储有关基本表的约束违例的信息。

此表会在 DELETE、INSERT、MERGE 或 UPDATE 语句检测到以下违例时进行更新:在 SQL 的 START VIOLATIONS TABLE 语句已为其创建关联违例表(对于 GBase 8s,还创建了诊断表)的数据库表中,违反了启用的约束或唯一索引。对于具有活动违例表的每个基本表,sysviolations 表都有对应的行,同时具有以下各列。
类型 解释
targettid INTEGER 目标表(对其定义违例表和诊断表的基本表)的标识代码
viotid INTEGER 违例表的标识代码
diatid INTEGER 诊断表的标识代码
maxrows INTEGER 在其中已定义过滤方式对象的目标表上,通过单一插入、更新或删除操作可插入诊断表中的最大行数。

maxrows 列还表示在启用已禁用的对象或将禁用的对象设置为过滤方式的单个操作期间可插入到诊断表中的最大行数(前提是该目标表存在诊断表)。如果没有为诊断或违例表指定最大值,那么 maxrows 包含 NULL 值。

此表的主键是 targettid 列。还对 viotid 列定义了附加唯一索引。

GBase 8s 还具有 diatid 列的唯一索引。