2008-09-23 44 views
0

我在我的數據庫中的表關係:爲什麼我得到這個表關係的「多重級聯路徑」?

  Parent 
     / \ 
    Child1  Child2 
     \  /
     GrandChild 

我試圖創建FK關係,這樣父表級聯到兩個孩子和孫子表刪除。對於任何一個特定的granchild,它將或者是一個或另一個子表的父代,但從不同時。

當我試圖將ON DELETE CASCADE添加到FK關係時,一切都很好,將它們添加到兩個孩子的一個「邊」(Parent-Child1-GrandChild適用於級聯刪除)。但是,只要在關係的Child2「端」添加級聯刪除,SQL就會告訴我FK將導致多個層疊路徑。我的印象是多個級聯路徑只適用於多個FK表示同一個表的情況。爲什麼我會在這種情況下獲得多個級聯路徑錯誤?

PS此時表格關係很難改變,所以簡單地告訴我改變我的表格結構不會有幫助,謝謝。

回答

4

該消息表示如果刪除父記錄,則有兩條路徑導致所有可刪除的GrandChild記錄。

修復:刪除FK中的ON DELETE CASCADE選項,併爲ChildX表創建INSTEAD OF DELETE觸發器,刪除所有孫級記錄,然後childX記錄它們自己。