目标表、违反表和诊断表之间的关系

用户可利用目标表、违反表和诊断表之间的关系来获得关于在 INSERT、DELETE 和 UPDATE 期间导致数据完整性违反的行的诊断信息。违反表的每一行至少在诊断表中有一对应的行。

违反表中的给定的行可在诊断表中有多个对应的行。诊断表中的多个行在它们的 gbasedbt_tupleid 列都有相同的序列标识符,以便于它们都链接到违反表中的同一行。对于违反表中的同一行,诊断表中可存在多行,因为违反表中的不符合的行可导致多次数据完整性违反。

例如,同一不符合的行可违反一列的唯一索引,违反另一列的非 NULL 约束,并违反第三列的检查约束。在此情况下,对于违反表中的单个不符合的行,诊断表包含三行。每一诊断行标识违反表不符合的行导致的一种不同的数据完整性违反。

通过连接违反表与诊断表,DBA 或目标表的所有者可获得关于违反表中任何或所有不符合的行的诊断信息。SELECT 语句可交互地执行这些连接,或您可写程序来在会话内执行它们。