我在我的數據庫中的兩個表與下面的模式:MySQL在刪除設置默認
locations (
location_id INT PRIMARY KEY,
location VARCHAR
)
和
venues (
venue_id INT PRIMARY KEY,
venue VARCHAR,
venue_location INT FOREIGN KEY locations(location_id)
ON DELETE CASCADE
)
一個大問題引起,當我需要刪除的位置,但不場地。我怎樣才能刪除只有地點,但沒有相同的location_id
地點。我該怎麼做才能達到這個要求。
示例數據:
/*locations table and data*/
locations(1, "Kathmandu");
locations(2, "Ilam");
locations(3, "Fikkal");
/*venues table and data*/
venues(1, "Green View Hotel and Lodge", 2);
venues(2, "Hyatt Hotel and Lodge", 1);
venues(3, "Abc Hotel", 3);
我怎麼才能把locations
位置 「Fikkal」,而不影響venues
「ABC飯店」。我知道ON DELETE CASCADE正在刪除場地中的一排,同時刪除了相同ID的位置。但是,如果我刪除ON刪除CASCADE mysql說FK約束失敗,它也明顯。你將如何解決這樣的問題。
我在想什麼作爲一個解決方案是在locations
表中創建一個默認位置如下圖所示:
位置(0,「默認位置」);
並執行類似ON DELETE SET DEFAULT
但真的不知道如何。
但我覺得有一些professional
和standard
方式來處理這個問題。任何想法請。
謝謝
替換「CASCADE」但是,這voilate外鍵參考約束並不好。 – Guanxi
當然這並不好,但這是他的要求,我在頂部說過,我確信他知道如何處理功能。 – 2013-07-22 13:17:20