2012-01-01 204 views
1

我遇到了這篇文章http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/但我沒有得到「添加新節點」部分。在MySQL中管理分層數據

它說我能做到這一點,以添加一個新的節點:

SELECT @myRight := rgt FROM nested_category 
WHERE name = 'TELEVISIONS'; 

UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight; 
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight; 

INSERT INTO nested_category(name, lft, rgt) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2); 
  1. 在運行時我就知道父不是兄弟。
  2. 如果該節點根本沒有兄弟姐妹怎麼辦?如何添加?
  3. 如何添加新的根節點?
+0

而不是那個結構,你應該使用*閉包表*的方法。 – 2012-01-01 19:59:13

+0

@tereško謝謝,但爲什麼? – oaziz 2012-01-01 20:45:27

+0

因爲無論你做什麼,最終都會出現錯誤。這種方法適用於相對較少的記錄,但對於更大的集合或更多的事務,您應該使用閉包表。 – Mroz 2013-10-22 10:53:06

回答

0

兄弟姐妹並不重要。你可以通過添加parent_id來添加新節點。 它的工作方式如下:將節點添加爲父節點的最左側子節點,然後更新其位置在新節點(樹的所有節點)右側的節點的lft和rgt。現在樹的所有節點都正在更新。

爲了添加一個新的根節點,你應該把它的parent_id設置爲NULL。

我希望這對你有用。