2012-02-29 82 views
15

我覺得我很愚蠢,但是我無法在phpMyAdmin界面的任何位置找到向外鍵添加約束的地方,例如, CASCADE ON DELETE在phpMyAdmin中添加約束條件

我在這裏和phpMyAdmin wiki上找過類似的問題,但是我找不到任何關於它的東西。

我意識到我可以通過查詢界面來做到這一點,但我想知道如何通過圖形界面來做到這一點。

+0

[在phpMyAdmin中設置外鍵?]可能重複(http://stackoverflow.com/questions/459312/setting-up-foreign-keys-in-phpmyadmin) – 2012-02-29 13:11:00

+1

我發現它並沒有'幫助。現在問題解決了。 – Alex 2012-02-29 13:24:40

+0

哦,是的,這兩個表(具有FK和引用的那個應該是InnoDB,或者在另一個事務引擎中)。 – 2012-02-29 13:27:10

回答

30

首先,你應該有你的存儲引擎作爲InnoDB。然後選擇一個表並轉到「結構」選項卡。

在表格下方您會看到'關係視圖',點擊它。從那裏你可以添加約束。

+0

啊謝謝,存儲引擎設置錯了,這就是爲什麼我不能添加約束。 – Alex 2012-02-29 13:24:02

+0

你是welocme,Alex。很高興我能幫上忙。 – utsikko 2012-02-29 13:26:49

+0

我看到'+索引',沒有'關係視圖'。請幫助設置外鍵約束。 – 2014-01-21 15:50:33

7

CASCADE

每當在主(參考)錶行被刪除(相應的更新),孩子的各行(引用)有匹配的外鍵列的表會被刪除(RESP。更新)。這稱爲級聯刪除(resp。update [2])。

RESTRICT

時引用在引用表中的值的外鍵表中存在行的值不能被更新或刪除。同樣,只要從外鍵表中引用該行,就不能刪除該行。

NO ACTION

NO ACTION和制約非常相像。 NO ACTION和RESTRICT的主要區別在於,在NO ACTION中,參照完整性檢查是在嘗試更改表後完成的。 RESTRICT在嘗試執行UPDATE或DELETE語句之前執行檢查。如果參照完整性檢查失敗,那麼這兩個參照行爲的作用相同:UPDATE或DELETE語句將導致錯誤。

SET NULL

引用行中的外鍵值設置爲NULL當引用的行被更新或刪除。這隻有在引用表中的相應列可以爲空時纔有可能。由於NULL的語義,外鍵列中帶有NULL的引用行不需要引用行。