- Ymox,
Bonjour tout le monde (oui, il est tôt…) !
Je cherche à pouvoir regénérer les poids gauche-droite d'une table nouvellement convertie pour utiliser la représentation intervallaire. Je pensais au départ utiliser l'ID des éléments, mais comme il y a eu des suppressions, ça va générer des trous, ce qui n'est pas vraiment bien géré par l'outil. Je suis donc parti en quête de quelque chose qui me permettrait de pouvoir re-générer mes poids de manière propre, en tenant cependant un tant soit peu compte de l'ordre de création de mes éléments.
J'ai fini par concocter la requête suivante :
1 2 3 4 5 | SET @rank=0; UPDATE ma_table t SET t.lft = @rank * 2 + 1, t.rgt = (@rank + 1) * 2, @rank = @rank + 1 WHERE tt.id <> 1 ORDER BY `champ1` DESC, `champ2` DESC |
Cependant, si je suis ici, c'est parce que cela ne semble pas fonctionner, du moins avec MySQL 5.7.9 : j'ai droit à une notification d'erreur de syntaxe pour la partie @rank = @rank + 1
.
Est-ce que quelqu'un pourrait aimablement me montrer comment faire, s'il y a juste une petite astuce que j'ai loupé ?
Merci