[英]Implementation of Tree structure in MySQL
我希望解決方案如下表所示:
---------------------
emp lft rgt
---------------------
Albert 1 12
Bert 2 3
Chuck 4 11
Donna 5 6
Eddie 7 8
Fred 9 10
--------------------
我已經手動插入了上面的示例值。 但是我需要動態
如果要在此表中再插入一個條目,則可以將其放在表的頂部,中間或結尾。 例如,如果我插入Ragu報告給Fred,那么在此過程之后,我需要的結果如下:
---------------------
emp lft rgt
---------------------
Albert 1 14
Bert 2 3
Chuck 4 13
Donna 5 6
Eddie 7 8
Fred 9 12
Ragu 10 11
--------------------
我需要重組數字以使用存儲過程動態發生。
假設您要插入“ Earl” 6,9
在范圍> 6范圍內的任何人的左值上方。
UPDATE YOURTAB SET Lft = Lft + 1 where lft > 6;
然后為值大於+6的任何人更新相應的“ Rgt”。
UPDATE YOURTAB SET Rgt = Rgt + 1 where Rgt > 6;
將新行插入正確的位置。
將值插入“伯爵”,6、9
一種更簡單,更可擴展的方法是將初始值插入為100的倍數,然后可以輕松地在現有范圍之間插入新值。 如果您插入了連續范圍的6個新條目(150,125,112,106,103,101),這仍然需要您進行重組。
甚至更好地使用浮點數作為范圍值,那么您將不需要重新組織,因為始終是現有條目之間的數字。 即始終是一個值(Lft of row after - Lft of row before) / 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.