2012-11-17 65 views
3

我有3張桌子。 最後兩個表的外鍵在同一個字段中的第一個。 這兩個外鍵都設置爲UPDATE CASCADE,DELETE CASCADE。 當我刪除第二個表中的子行時,第一個表中的父行保持不變。 但是,當我刪除第三個表中的子行時,表中的第一行被刪除!DELETE CASCADE在子行上刪除父項?

外鍵不應該像兩個女兒一樣行爲?

+1

請向我們展示您的數據庫架構 - 最好在SQLFiddle中。 –

+0

不好意思!我解決了這個問題! –

+2

你能把你的解決方案放在這裏,讓每個人都能看到它嗎? – Rachcha

回答

1

我的猜測是表2使用MyISAM表(不支持外鍵),而另外兩個表使用InnoDB引擎(支持外鍵)。

From the documentation

外鍵關係涉及持有中央數據值的父表,並與指回其父相同的值的子表。 FOREIGN KEY子句在子表中指定。 父表和子表都必須是InnoDB表。它們不能是TEMPORARY表。