参考约束

参考约束是一种约束属性,SQL 编译器可使用它来改善对数据的访问。 参考约束不是由数据库管理器强制执行的,并且不用于数据的附加验证;它们用来提高查询性能。

通过使用 CREATE TABLE 或 ALTER TABLE 语句定义参考约束。 您先添加约束,然后使它们与约束属性关联,从而指定数据库管理器是否将强制执行约束。 对于主键约束、唯一约束和检查约束,可进一步指定是否可信任该约束。 对于引用完整性约束,如果未强制实施该约束,那么可进一步指定能否信任该约束。 未强制实施并且不可信的约束又称为统计引用完整性约束。 可指定是否要将引用完整性约束或检查约束用于查询优化。

参考 RI(引用完整性)约束用于对查询性能以及REFRESH IMMEDIATE MQT 的增量处理和登台表进行优化。 如果违反参考约束,MQT 数据和登台表可能会不正确。

例如,维护父/子表的顺序很重要。 如果要向父/子表中添加行,必须首先将行插入父表。 要从父/子表中移除行,必须先从子表中删除行。 这样就能始终确保子表中没有孤行。 否则,参考约束违例就可能会影响在表维护期间执行的查询的正确性,以及从属 MQT 数据和登台表的增量维护的正确性。

可以为 按列组织的按行组织的 表创建未实施的主键或唯一约束。 与强制执行的主键或唯一约束不一样,非强制执行的主键或唯一约束不会对数据创建索引。 仅当绝对确定表数据符合参考约束时,才应指定该约束。 由于 Db2® 数据库管理器不会对这些约束强制实施唯一性,因此如果表数据违反未强制实施的约束,那么可能会发生不正确的结果。 无法在任何强制执行的引用完整性定义中引用非强制执行的主键约束。