2012-06-11 108 views
0

我在mysql中的兩個表之間有一對多的關係。Mysql外鍵,必須在引用表或鍵中匹配刪除?

一種稱爲類型網址爲

url 
varchar(255) 

和一個稱爲順序與URL的索引的初級。

url   | id_no 
varchar(255) | int 

爲了表可以在裏面有很多的價值觀和已經有一個外鍵設置,這樣,如果url在表中刪除它刪除與匹配的url所有相關聯的密鑰order

訂單也可以手動刪除這意味着一個url可以在不具有表爲了的關係存在。

有沒有辦法建立一個外鍵,這樣,如果一個url沒有表爲了那麼它將從類型刪除本身有關係嗎?

望着MySQL手冊,我不能弄清楚,我被CASCADE困惑,它說,它會刪除所有相關聯的密鑰,但我只希望從表類型刪除url當且僅當有兩者之間沒有關係?

感謝您的幫助!

回答

1

您可以輕鬆地做到這一點有DELETE扳機上order表:讓它檢查,如果存在其他行具有相同的URL,如果不從type刪除。

另一種方式來做到這一點是建立一個類似於維護腳本

DELETE FROM `type` WHERE url NOT IN (
    SELECT DISTINCT `url` FROM `order` 
) 

,並定期或按需的基礎上運行。