原理:
插入一条记录后,更新treekey值为 父ID的treekey + 自身ID 不足5位要前面用0补齐
表:test
id    parentid    name    treekey
1        0        山东     00001
4        1        济宁     00001.00004
6        4        曲阜     00001.00004.00006
5        1        济南     00001.00005
2        0        上海     00002
8        2        上海市   00002.00008
3        0        北京     00003
7        3        朝阳区   00003.00007
SQL实现树型结构N级目录的算法create trigger tr_test
SQL实现树型结构N级目录的算法
on test 
SQL实现树型结构N级目录的算法
for insert 
SQL实现树型结构N级目录的算法
as 
SQL实现树型结构N级目录的算法
SQL实现树型结构N级目录的算法
declare @id int,@parentid int,@keyvalue varchar(20)
SQL实现树型结构N级目录的算法
select @id=id from inserted --查出插入的自身ID
SQL实现树型结构N级目录的算法
select @parentid=parentid from inserted  --查出记录的插入的父ID
SQL实现树型结构N级目录的算法

SQL实现树型结构N级目录的算法    
if @parentid = 0--如果父ID为0,即是一级目录,则转换为00001这样的格式
SQL实现树型结构N级目录的算法
          set @keyvalue = right('0000' + rtrim(@id),5)  
SQL实现树型结构N级目录的算法    
else--这里设置自身应该更新的treekey,值为:父类的keytree + . + 自身的ID
SQL实现树型结构N级目录的算法
                     set @keyvalue =  convert(varchar(20),(select keyvalue from test
SQL实现树型结构N级目录的算法                                  
where id = @parentid))+'.'+ right('0000' + rtrim(@id),5)
SQL实现树型结构N级目录的算法    
SQL实现树型结构N级目录的算法

相关文章: