0

私はしばらくこれを理解しようとしてきました.リストにノードを追加するためのMySQLクエリがあります.例:

ヘレン

-パッケン

-シェーネン

レディース

男性の前に「子供」を追加したいと思います。この場合、誰かが言うでしょう: 男性の前に子供を追加します。

これは、Male の後に Children を追加するためのクエリです。

テーブルcategories書き込みをロックします。

SELECT @myRight := rghtFROM categoriesWHERE name= '男性';

UPDATE categoriesSET rght= rght+ 2 WHERE rght> @myRight; UPDATE categoriesSET lft= lft+ 2 WHERE lft> @myRight;

INSERT INTO categories( name, lft, rght) VALUES('Children', @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 に答える