Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 数据完整性 » 实体和参照完整性

 

参照完整性

要使外键关系有效,外键中的条目必须与参照表中一行的主键值相对应。有时,可能会参照其它某个唯一的列组合,而不参照主键。

通常,一个外键会参照另一个表中的一个主键或 UNIQUE 约束。如果该主键不存在,不符合要求的外键被称作遗孤。SQL Anywhere 自动确保您的数据库不包含违反参照完整性的行。这个过程被称作校验参照完整性。数据库服务器通过计算遗孤数来校验参照完整性。

使用多列外键时,您可以使用 MATCH 子句来确定哪种情况构成孤立行以及哪种情况构成参照完整性违规。MATCH 子句还允许您指定键的唯一性,从而免除了另外单独声明唯一性的必要。

以下列出了可指定的 MATCH 类型:

  • MATCH [ UNIQUE ] SIMPLE   如果所有列值都与主键表中某行的对应列值相匹配,则外键表中发生行匹配。如果主键中至少有一个列值为 NULL,则外键表中会出现孤立行。

    MATCH SIMPLE 为缺省行为。

    如果指定 UNIQUE 关键字,引用表对于非 NULL 键值只能有一项匹配。

  • MATCH [ UNIQUE ] FULL   如果任何值都不为 NULL 并且值与主键表中某行的对应列值相匹配,则外键表中发生行匹配。如果外键中的所有列值都为 NULL,则会产生孤立行。

    如果指定 UNIQUE 关键字,引用表对于非 NULL 键值只能有一项匹配。

 示例 1
 示例 2
 示例 3

引用循环