zoukankan      html  css  js  c++  java
  • SQL实现树型结构N级目录的算法

    原理:
    插入一条记录后,更新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
    create trigger tr_test
    on test 
    for insert 
    as 

    declare @id int,@parentid int,@keyvalue varchar(20)
    select @id=id from inserted --查出插入的自身ID
    select @parentid=parentid from inserted  --查出记录的插入的父ID

        
    if @parentid = 0--如果父ID为0,即是一级目录,则转换为00001这样的格式
              set @keyvalue = right('0000' + rtrim(@id),5)  
        
    else--这里设置自身应该更新的treekey,值为:父类的keytree + . + 自身的ID
                         set @keyvalue =  convert(varchar(20),(select keyvalue from test
                                      
    where id = @parentid))+'.'+ right('0000' + rtrim(@id),5)
        
  • 相关阅读:
    P2805 [NOI2009]植物大战僵尸
    P3833 [SHOI2012]魔法树
    LOJ121 「离线可过」动态图连通性
    POJ2774 Long Long Message
    POJ2406 Power Strings
    SPOJ 694 DISUBSTR
    POJ3261 Milk Patterns
    HIHOcoder 1466 后缀自动机六·重复旋律9
    P2504 [HAOI2006]聪明的猴子
    P3804 【模板】后缀自动机
  • 原文地址:https://www.cnblogs.com/yangbin1005/p/989881.html
Copyright © 2011-2022 走看看