要使外键关系有效,外键中的条目必须与参照表中一行的主键值相对应。有时,可能会参照其它某个唯一的列组合,而不参照主键。
通常,一个外键会参照另一个表中的一个主键或 UNIQUE 约束。如果该主键不存在,不符合要求的外键被称作遗孤。SQL Anywhere 自动确保您的数据库不包含违反参照完整性的行。这个过程被称作校验参照完整性。数据库服务器通过计算遗孤数来校验参照完整性。
使用多列外键时,您可以使用 MATCH 子句来确定哪种情况构成孤立行以及哪种情况构成参照完整性违规。MATCH 子句还允许您指定键的唯一性,从而免除了另外单独声明唯一性的必要。
以下列出了可指定的 MATCH 类型:
MATCH [ UNIQUE ] SIMPLE 如果所有列值都与主键表中某行的对应列值相匹配,则外键表中发生行匹配。如果主键中至少有一个列值为 NULL,则外键表中会出现孤立行。
MATCH SIMPLE 为缺省行为。
如果指定 UNIQUE 关键字,引用表对于非 NULL 键值只能有一项匹配。
MATCH [ UNIQUE ] FULL 如果任何值都不为 NULL 并且值与主键表中某行的对应列值相匹配,则外键表中发生行匹配。如果外键中的所有列值都为 NULL,则会产生孤立行。
如果指定 UNIQUE 关键字,引用表对于非 NULL 键值只能有一项匹配。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |