階層の保存に MPTT を使用しています。追加と削除の概念は、このModified Preorder Tree Traversalリンクで詳しく説明されています。
Modified preorder tree traversal で特定のノードとそれに関連付けられているツリーを更新するにはどうすればよいですか? 例: - TLA とその階層を TLC の下に移動したい場合。SQLスクリプトを使用して、どうすればそれを行うことができますか?
どんな助けでも大歓迎です。
ありがとう!
階層の保存に MPTT を使用しています。追加と削除の概念は、このModified Preorder Tree Traversalリンクで詳しく説明されています。
Modified preorder tree traversal で特定のノードとそれに関連付けられているツリーを更新するにはどうすればよいですか? 例: - TLA とその階層を TLC の下に移動したい場合。SQLスクリプトを使用して、どうすればそれを行うことができますか?
どんな助けでも大歓迎です。
ありがとう!
そのリンクに基づいて-特定のルートノードを取得し、そのルートノードの左の値よりも大きい左の値とそのルートの右の値よりも小さい右の値の両方を持つすべてのノードを更新することによってツリーを更新するように見えますノード。かなり簡単なようです。それは役に立ちますか?
テクニカル サポート ポイントの後に TLA ポイントを移動します。
@TlaLeft = 2
@TlaRight = 7
@TechSupportRight = 18
TLA 新しいロケーション ポイント後の最初の更新:
UPDATE Tree SET lft = lft + @TlaRight - @TlaLeft +1,rgt = rgt + @TlaRight - @TlaLeft +1 WHERE rgt > @TechSupportRight;
2 番目の更新 TLA とサブポイントを新しい場所に:
UPDATE Tree SET lft = @TechSupportRight - @TlaLeft + lft+1 ,rgt = @TechSupportRight - @TlaRight + rgt+1 WHERE lft >= @TlaLeft and rgt <= @TlaRight;
TLA の古い場所の後の 3 回目の更新:
UPDATE Tree SET lft = lft - (@TlaRight - @TlaLeft ) - 1 WHERE lft > @TlaLeft ;
UPDATE Tree SET rgt = rgt - (@TlaRight - @TlaLeft ) - 1 WHERE rgt > @TlaRight;