Управление иерархическими данными в MySQL - PullRequest
1 голос
/ 01 января 2012

Я наткнулся на эту статью 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 голосов
/ 08 мая 2013

это не имеет значения, братья и сестры.Вы можете добавить новый узел, просто имея его parent_id.это работает так: добавьте узел в качестве самого левого потомка родителя, затем обновите lft и rgt узлов, чтобы их позиции были справа от нового узла (все узлы дерева).теперь все узлы дерева обновляются корректно.

для добавления нового корневого узла вы должны установить его parent_id в NULL.

Надеюсь, это будет полезно для вас.

...