我有一個數據庫,有幾個表。 「主」表,稱爲contacts
,存儲有關聯繫人的信息,每一個都具有id
,姓名等..MySQL,外鍵約束沒有任何區別
我也有一樣,其他20桌,每一個代表一個特定的功能,如staff
,media
.. 。
這些函數表中的每一個都使用外鍵引用聯繫人表。我最近添加了這個約束到所有的表,以下查詢,這裏的表staff
:
ALTER TABLE staff ADD contactsConstraint FOREIGN KEY (c_id) REFERENCES contacts(id) ON UPDATE CASCADE ON DELETE CASCADE
。
如果我更改了聯繫人中的一行,我也希望更改顯示在職員表中 - 反之亦然。但是這個限制似乎沒有什麼區別! 它所做的唯一的事情是,如果我嘗試向staff
添加一行,其中c_id
值不存在於contacts
表中,則會拋出錯誤。
我做錯了什麼?應該指出的是,我最近將數據庫引擎更改爲InnoDB,以確保我的約束條件可行。
我也嘗試刪除ON DELETE CASCADE
,所以只有對錶的更新纔會在兩個表中生效,但也沒有效果。
'如果我在聯繫人中更改了一行,我也希望更改顯示在職員表'=>這聽起來像是您在聯繫人和職員中存儲了相同的字段信息。規範化! – lexu 2010-02-12 13:41:23