当要连接的两个表表达式都不包含逗号时,SQL Anywhere 将检查语句中表对中的外键关系,并且生成单个连接条件。
例如,以下连接具有两个表对:A-C 和 B-C。
(A NATURAL JOIN B) KEY JOIN C |
SQL Anywhere 通过查看表对 A-C 和 B-C 中的外键关系为 C 与 (A NATURAL JOIN B)
的连接生成一个连接条件。它根据存在多个外键关系时确定键连接的规则为这两对表生成一个连接条件:
首先,它在 A-C 和 B-C 中查找一个外键,该单个外键的角色名与其所引用的某一主键表的相关名相同。如果正好只有一个外键满足此条件,则使用此外键。如果有多个外键的角色名与主键表的相关名相同,则认为该连接是不明确的,并且发出错误消息。
如果没有任何外键与主键表的相关名同名,则 SQL Anywhere 将查找这些表间的任何外键关系。如果只有一个外键关系,则使用此外键关系。如果有多个外键关系,则认为该连接是不明确的,并且发出错误消息。
如果没有任何外键关系,则发出错误消息。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |