orgid parentid name brotherid
1 0 广东 1   
2 1 广州 1
3 2 越秀区 1
4 2 天河区 2
5 2 番禺区 3
.........
现在我插入了一条6 2  白云区  2 , 然后我要让所有同一parentid的数据的brotherid 从2开始依次往后排
1 0 广东 1   
2 1 广州 1
3 2 越秀区 1
4 2 天河区 3
5 2 番禺区 4
6 2 白云区 2
这个样子,由于我的数据比较多,所以需要写一个动态的sql语句,大家帮帮忙啊

解决方案 »

  1.   

    需求是什么,写个触发器自动更新brotherid吗?看不太明白
      

  2.   

    declare @parentid int
    ,       @brotherid int
    ,       @orgid int
    set @orgid = 6
    set @parentid = 2
    set @brotherid = 2
    update tablename set brotherid = brotherid + 1 where parentid = @parentid and brotherid >= @brotherid and orgid != @orgid
      

  3.   

    create trigger brotherid_update on tb
     for insert
     as 
     begin
      update tb set brotherid=brotherid+1 where brotherid>=(select max(brotherid) from  inserted)
     end
    go
      

  4.   

    orgid parentid name brotherid
    1 0 广东 1  
    2 1 广州 1
    3 2 越秀区 1
    4 2 天河区 2
    5 2 番禺区 3如果是这样的数据,brotherid不需要存在表里,下面的查询即可实现:SELECT orgid,parentid,name,
        brotherid = ROW_NUMBER() OVER(PARTITION BY parentid ORDER BY orgid)
    FROM 表