2011-12-01 43 views
2

我有一個teamnews表:enter image description hereMySQL:如何在使用默認值設置表值之後更新外鍵字段並創建關係?

而另一個叫團隊表: enter image description here

在teamnews表中的數值前一個用戶登錄到該網站預定。 可以說,當我一個用戶(teamName)標誌要更新的teamID排在那裏NewsID = 1 並創建一個關係,所以,如果我最終刪除用戶(teamName)在teamNews表teamID值復位至零。

這可能嗎? 請記住我正在使用phpMyAdmin,所以我不完全熟悉高級SQL術語。

當我嘗試這樣做,我得到和錯誤:enter image description here

這裏的錯誤:

enter image description here

回答

1

你需要指定一個FOREIGN KEY。您可以通過運行以下命令來添加它:

ALTER TABLE teamnews 
ADD CONSTRAINT fk_teamID 
    FOREIGN KEY (TeamID) 
    REFERENCES team (teamID) 
    ON DELETE SET NULL; 

這會使用外鍵在表格之間建立正式的關係。 ON DELETE SET NULL是對你很重要的部分。這表示,只要刪除了引用表中的任何項目(本例中爲team),那麼此表中具有該團隊ID的所有行都應該將該字段設置爲空,即—正是您要查找的內容。

請注意,如果您使用的是InnoDB數據庫引擎(不MyISAM引擎),這隻會工作。你可能可以通過phpmyadmin改變它(我不熟悉phpmyadmin,所以我無法幫助你瞭解細節)。

另外請注意,爲此,MySQL必須能夠「SET NULL」 - 包含具有此約束的外鍵的字段不能設置爲「NOT NULL」,否則它將失敗錯誤說「檢查數據類型」。

+0

當我嘗試這個時,我得到一個錯誤 – NeverPhased

+0

我認爲問題在於'teamnews'表中'teamID'字段被設置爲「NOT NULL」。請更新它以允許空值(並將默認值設置爲「NULL」而不是「0」)。然後嘗試再次添加外鍵。 –

相關問題