我希望解决方案如下表所示:
---------------------
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
--------------------
我需要使用存储过程动态地重新组织数字。
答案 0 :(得分:0)
假设您要插入“Earl”6,9
向上左边的任何人使用from范围> 6。
UPDATE YOURTAB SET Lft = Lft + 1 where lft > 6;
然后为值大于+6的任何人更新相应的“Rgt”。
UPDATE YOURTAB SET Rgt = Rgt + 1 where Rgt > 6;
将新行插入正确的位置。
插入你的价值观“Earl”,6,9
一种更简单,更具扩展性的方法是将初始值插入为倍数 如果为100,则可以在现有范围之间轻松插入新值。如果你插入了6个新条目的连续范围(150,125,112,106,103,101),这仍然需要你重新组织。
或者甚至更好地使用浮点数作为范围值,然后您将永远不需要重新组织,因为它将始终是现有条目之间的数字。
即始终为值(Lft of row after - Lft of row before) / 2