要在Oracle中创建外键,有时我会看到
CONSTRAINT FK_Supplier
FOREIGN KEY (Supplier_id)
REFERENCES Supplier(Supplier_id)
但是,有些时候,我看到了这个
CONSTRAINT FK_Supplier
FOREIGN KEY (Supplier_id)
REFERENCES Supplier
不同之处在于,列Supplier_id
位于第一个语句中的表Supplier
之后,但在第二个语句中省略了它。
感谢您的帮助
答案 0 :(得分:2)
如果仅标识父表或视图并省略该列 name,然后外键自动引用主键 父表或视图。相应的一列或多列 外键和引用的键必须按顺序和数据类型匹配。
答案 1 :(得分:1)
对于不忠实于关系模型的SQL的一个主要批评是依赖列排序。但是,仅仅因为SQL包含非关系特性,并不意味着应该使用它们;事实上,我强烈认为应该避免这些特征,或者在不可避免的情况下,减轻这种特征。
标准SQL提供了一些语法来避免列排序依赖(NATURAL JOIN
,UNION CORRESPONDING
等)。其他语法有助于减轻这种依赖(例如INSERT INTO (<comma list of columns>) VALUES (<comma list of fields in same order>)
)。 FOREIGN KEY
语法属于第二类。
结论:始终使用第一个示例中的语法并避免使用第二个。