2012-04-19 64 views
0

在Oracle中創建一個外鍵,有些時候我看到父表中的省略列時,外鍵

CONSTRAINT FK_Supplier 
    FOREIGN KEY (Supplier_id) 
    REFERENCES Supplier(Supplier_id) 

但是,另外一些時候,我看到這個

CONSTRAINT FK_Supplier 
    FOREIGN KEY (Supplier_id) 
    REFERENCES Supplier 

的區別在第一條語句中列Supplier_id在表Supplier之後,但在第二條語句中省略。

感謝您的幫助

回答

2

這在documentation:

如果您發現只有父表或視圖,並省略列 名的記述,則外鍵自動引用主鍵 父表或視圖。 外鍵和引用鍵的相應列或列必須按順序和數據類型匹配。

+0

謝謝你的答案和鏈接。 – Richard77 2012-04-19 18:26:52

1

SQL對於不忠於關係模型的主要批評之一是依賴列排序。但是,僅僅因爲SQL包含非關係特性並不意味着應該使用它們;事實上,我強烈地認爲應該避免這種特徵,或者在避免不可能時避免這種特徵。

標準SQL提供了一些語法來避免列排序依賴(NATURAL JOIN,UNION CORRESPONDING等)。其他語法有助於減輕這種依賴(例如INSERT INTO (<comma list of columns>) VALUES (<comma list of fields in same order>))。 FOREIGN KEY語法屬於第二類。

結論:總是在第一個示例中使用該語法並避免第二個示例。