我一直试图解决这个问题,我有一个MySQL查询将一个节点添加到列表中,例如:
和仁
-Pakken
-Schoenen
达姆
我想在男性之前添加“儿童”。在这种情况下,有人会说:在男性之前添加孩子。
这是在男性之后添加儿童的查询。
LOCK TABLE
categories
WRITE;SELECT @myRight:=
rght
FROMcategories
WHEREname
='男';更新
categories
设置rght
=rght
+ 2 WHERErght
> @myRight; 更新categories
设置lft
=lft
+ 2 WHERElft
> @myRight;INSERT INTO
categories
(name
,lft
,rght
)VALUES('Children', @myRight + 1,@ myRight + 2);UNLOCK TABLES;
所以,从:http://cl.ly/image/1U3O2k1F2I1T到:http://cl.ly/image/1D0k1Z1D2c18
谢谢:)
答案 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;