表結(jié)構(gòu)
新增:
通過我們剛才新增數(shù)據(jù)得到這個(gè)結(jié)構(gòu)的操作,我們發(fā)現(xiàn)新增分兩種情況。第一種如下圖所示:
1:變更所有受影響的節(jié)點(diǎn)夕冲,給新節(jié)點(diǎn)騰出空位置,所有左節(jié)點(diǎn)比G 左節(jié)點(diǎn)大的裂逐,都增加2歹鱼。所有右節(jié)點(diǎn)比G右節(jié)點(diǎn)大的,也增加2.
update product_type set pt_left=pt_left+2 where pt_left>12;
update product_type set pt_right=pt_right+2 where pt_right>13;
insert into product_type(pt_name,pt_fid,pt_depth,pt_left,pt_right) values('XX',pid_D,3,13,14);
2:新增子節(jié)點(diǎn)卜高,但該新增的節(jié)點(diǎn)左側(cè)并有節(jié)點(diǎn)弥姻,列如:在E下新增Y節(jié)點(diǎn)南片,Y節(jié)點(diǎn)的左右值為7,8.這時(shí)候我們在修改后續(xù)節(jié)點(diǎn)時(shí),應(yīng)該考慮到E節(jié)點(diǎn)的存在庭敦。
update product_type set pt_left=pt_left+2 where pt_left>6;
update product_type set pt_right=pt_right+2 where pt_right>=7;
insert into product_type(pt_name,pt_fid,pt_depth,pt_left,pt_right) values('Y',2,3,7,8);
查詢:
B節(jié)點(diǎn)下所有 子節(jié)點(diǎn)
SELECT * FROM product_type WHERE pt_left BETWEEN 2 AND 11 ORDER BY lft ASC;