0

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

赫伦

-帕肯

-舍宁

女士们

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

这是在 Male 之后添加 Children 的查询。

锁定表categories写入;

选择 @myRight := rghtFROM categoriesWHERE name= '男性';

更新categoriesrght= rght+ 2 WHERE rght> @myRight; 更新categorieslft= lft+ 2 WHERE lft> @myRight;

插入categories( name, lft, rght) 值('儿童', @myRight + 1, @myRight + 2);

解锁表;

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

谢谢 :)

4

1 回答 1

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;
于 2013-10-02T12:15:09.030 回答