我有一個表使用鄰接列表模型進行層次結構存儲。因此,我在此表中最相關的欄目有:MySql數據庫表中的樹數據
ItemId // is auto_increment
ParentId
Level
ParentTrail // in the form of "parentId/../parentId/itemId"
然後我創建了一個插入跳跳虎之前,用於填充柱Level
和ParentTrail
。由於最後一列還包含當前項目的ID,因此我不得不在觸發器中使用一個技巧,因爲auto_increment
列在插入前觸發器中不可用。所以我從information_schema.tables
表中得到這個值。
所有工作正常,直到我嘗試編寫更新觸發器,當項目更改其父項(ParentId
已更改)時,該更新觸發器將更新我的項目及其後代。但是我無法在更新觸發器中更新我的表格。我所能做的就是改變當前記錄的值,但不改變其他值。
我可以爲層次結構數據使用單獨的表格,但這意味着我還必須創建一個將結合這兩個表格(1:1關係)的視圖,並且我想盡量避免這種情況。
有沒有辦法讓所有這些在同一個表中,以便這些字段(Level
和ParetTrail
)使用觸發器自動設置/更新自己?
爲層次結構數據創建單獨的表有什麼不好?這聽起來完全合適。 – 2009-12-10 15:17:02
因爲我想在MySQL中使用實體框架。有兩個表格會迫使我創建一個視圖並將其映射到我的實體類。更新實體實例(或創建新的實例)是不可能的。我想。 – 2009-12-10 15:43:46