管理MySQL中的分层数据

时间:2012-01-01 19:17:00

标签: mysql sql nested-sets hierarchical

我遇到了这篇文章http://mikehillyer.com/articles/managing-hierarchical-data-in-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. 如何添加新的根节点?

1 个答案:

答案 0 :(得分:0)

兄弟姐妹并不重要。你可以通过拥有其parent_id来添加新节点。 它的工作方式如下:将节点添加为父节点的最左子节点,然后更新节点的lft和rgt,使其位置与新节点(树的所有节点)相对。树的所有节点现在都在更新。

要添加新的根节点,您应该将其parent_id设置为NULL。

我希望这对你有用。