2014-02-28 36 views
0

的外鍵我有以下幾列的表uc_users創建表。使用另一個表錯誤

這裏是我的嘗試:

CREATE TABLE uc_user_network 
(
ID int NOT NULL AUTO_INCREMENT, 
GraphName varchar(255) NOT NULL, 
user_name varchar(50),  
networkid varchar(255), 
PRIMARY KEY (ID) 
FOREIGN KEY (user_name) REFERENCES uc_users(user_name) 
) 

ALTER TABLE uc_users 
    ADD CONSTRAINT fk_users 
    FOREIGN KEY (user_name) 
    REFERENCES uc_user_network(ID) 

不過,我得到以下錯誤:

FOREIGN KEY (user_name) REFERENCES uc_users(user_name) 

任何幫助,將不勝感激。由於

+0

您正在使用哪些DBMS? –

回答

0

user_nameuc_user_network應在uc_users相同類型相同user_nameuc_user_networkID。那麼它應該是什麼類型? intvarchar(255)

+0

我不認爲它需要完全相同的類型(當然取決於實現)。但是,外鍵列必須全部*隱式轉換爲相關主鍵列的數據類型(s )。 –

+0

完全一樣的類型varchar(50)。任何其他想法? – Ian

0

FOREIGN KEY (user_name) REFERENCES uc_users(user_name)不是錯誤:你得到的實際錯誤是什麼?

您將不能創建一個外鍵,除非滿足以下條件:

  1. 依賴關係必須已經存在。在你的情況下,如果表uc_users尚不存在,你不能定義引用它的外鍵。

  2. 的引用列(一個或多個)必須包含一個primary key(或者,取決於你SQL執行是否支持它,一個備用鍵諸如unique index)。在你的情況下,如果uc_users表中的列user_name不是主鍵,那麼不能像這樣引用它。

  3. 此外,如果外國參考是到複合鍵,多列組成,所有的鍵列必須被引用的,在其中它們在主鍵中定義的相同的順序。