2010-08-08 46 views

回答

3

1)爲了能在WALL表稱爲userid一個外鍵列,你需要創建一個列 - 跳到#2如果列已經存在:

ALTER TABLE WALL 
    ADD COLUMN userid INT(25) NOT NULL 

如果你想允許在沒有用戶ID是特異性存在WALL記錄IED:

ALTER TABLE WALL 
    ADD COLUMN userid INT(25) NULL 

2)現在你add the foreign key constraint

ALTER TABLE WALL 
ADD FOREIGN KEY (userid) REFERENCES USERS(userid) 
+0

感謝到目前爲止,但是我得到了「#1064 - 你的SQL語法有錯誤;檢查與你的MySQL服務器版本相對應的手冊, '參考用戶(用戶id)'在第2行「 當我運行修改表牆 添加國際密鑰用戶名參考用戶(用戶ID) – ritch 2010-08-08 00:24:32

+0

@ritch:固定 - 我忘了把方括號附近的FK列名稱。 – 2010-08-08 00:30:41

+0

ADD FOREIGN KEY後在括號「userId」的周圍放置圓括號。括號不是可選的,也不是多餘的。你可以有一個由多列組成的外鍵,並且它們都會進入括號內(colA,colB)。 – siride 2010-08-08 00:32:05

1

添加一個用戶ID列在牆壁上表,然後在其上創建一個外鍵。在SQL中,它看起來像這樣:

CREATE TABLE Wall (
    ... 
    UserID INT, 
    ... 
    FOREIGN KEY (UserID) REFERENCES User (UserID) ON UPDATE CASCADE ON DELETE RESTRICT, 
    ... 
) ENGINE=InnoDB; 

請注意,您可能不想要ON DELETE RESTRICT。這是最嚴格的選擇。在MySQL網站上閱讀它:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

+0

OP必須刪除現有的WALL表以便使用您提供的內容,或者重命名現有的表,以便可以創建新表並將數據複製過來。 – 2010-08-08 00:17:55

+0

我想在表格結構中說清楚。我考慮過使用ALTER TABLE語法,但我認爲這會讓它變得不那麼明顯。六合一,六合一,其他所有。 – siride 2010-08-08 00:18:42

+0

+1:用於演示如何在CREATE TABLE語句中實現FK – 2010-08-08 00:23:53