Hallo,
das Tutorial zu Nested Sets im Artikel www.php-resource.de/tutorials/read/21/3/ hat einen Fehler in der SQL-Anweisung.
Durch AND lft > V_RGT alleine wird sichergestellt, dass rgt größer als V_RGT sein muss (in NS ist rgt immer mindestens das Inkrement von lft und wenn somit lft größer als V_RGT ist, muss es rgt zwangsläufig auch sein) . Daher ist die zusätzliche Bedingung "AND rgt >= V_RGT;" in der ersten UPDATE-Anweisung überflüssig und zudem falsch, da rgt niemals gleich (wobei das alleinge > stimmen würde, wenn auch unnötig) V_RGT sein darf und kann, wenn die erste Bedingung true zurückliefert.
LOCK TABLES node WRITE;
UPDATE node
SET lft = lft + 2
WHERE root_id = V_ROOT_ID
AND lft > V_RGT
[COLOR=crimson] AND rgt >= V_RGT;[/COLOR]
UPDATE node
SET rgt = rgt + 2
WHERE root_id = V_ROOT_ID
AND rgt >= V_RGT;
INSERT INTO node ( root_id, payload, lft, rgt )
VALUES ( V_ROOT_ID, 'B - Reply auf "A"', V_RGT, V_RGT + 1 );
UNLOCK TABLES;
Habe das jetzt nicht getestet und verlasse mich mal auf meinen Instinkt
Grüße
cc-net
das Tutorial zu Nested Sets im Artikel www.php-resource.de/tutorials/read/21/3/ hat einen Fehler in der SQL-Anweisung.
Durch AND lft > V_RGT alleine wird sichergestellt, dass rgt größer als V_RGT sein muss (in NS ist rgt immer mindestens das Inkrement von lft und wenn somit lft größer als V_RGT ist, muss es rgt zwangsläufig auch sein) . Daher ist die zusätzliche Bedingung "AND rgt >= V_RGT;" in der ersten UPDATE-Anweisung überflüssig und zudem falsch, da rgt niemals gleich (wobei das alleinge > stimmen würde, wenn auch unnötig) V_RGT sein darf und kann, wenn die erste Bedingung true zurückliefert.
LOCK TABLES node WRITE;
UPDATE node
SET lft = lft + 2
WHERE root_id = V_ROOT_ID
AND lft > V_RGT
[COLOR=crimson] AND rgt >= V_RGT;[/COLOR]
UPDATE node
SET rgt = rgt + 2
WHERE root_id = V_ROOT_ID
AND rgt >= V_RGT;
INSERT INTO node ( root_id, payload, lft, rgt )
VALUES ( V_ROOT_ID, 'B - Reply auf "A"', V_RGT, V_RGT + 1 );
UNLOCK TABLES;
Habe das jetzt nicht getestet und verlasse mich mal auf meinen Instinkt
Grüße
cc-net