MySQL嵌套集在所选节点上添加节点

时间:2013-09-30 19:29:13

标签: mysql sql nested-sets

我一直试图解决这个问题,我有一个MySQL查询将一个节点添加到列表中,例如:

  

和仁

     

-Pakken

     

-Schoenen

     

达姆

我想在男性之前添加“儿童”。在这种情况下,有人会说:在男性之前添加孩子。

这是在男性之后添加儿童的查询。

  

LOCK TABLE categories WRITE;

     

SELECT @myRight:= rght FROM categories WHERE name ='男';

     

更新categories设置rght = rght + 2 WHERE rght> @myRight;   更新categories设置lft = lft + 2 WHERE lft> @myRight;

     

INSERT INTO categoriesnamelftrght)VALUES('Children',   @myRight + 1,@ myRight + 2);

     

UNLOCK TABLES;

所以,从:http://cl.ly/image/1U3O2k1F2I1T到:http://cl.ly/image/1D0k1Z1D2c18

谢谢:)

1 个答案:

答案 0 :(得分:0)

想出来:

LOCK TABLE `categories` WRITE;

SELECT @myLeft := `lft` FROM `categories`
WHERE `id` = '. $where .';

UPDATE `categories` SET `rght` = `rght` + 2 WHERE `rght` > @myLeft;
UPDATE `categories` SET `lft` = `lft` + 2 WHERE `lft` > @myLeft OR `lft` = @myLeft;

INSERT INTO `categories`(`name`, `lft`, `rght`) VALUES("'. $name .'", @myLeft, @myLeft + 1);

UNLOCK TABLES;