现在有一张明细表:A_ID,no,no1,no2
怎么做到a_id始终是有序的,也就是说如果有三条A_id就是,1,2,3
如果删除2这条,那么三自动变成2,
增加也是自动往上加的。

解决方案 »

  1.   

    用的什么库?要是SQL SERVER,可以在触发器里面写
       for delete事件
    update 表 set A_ID = A_ID - 1 where A_ID < deleted.A_ID  也可以写Delphi代码控制,
    在ADOQUERY的beforeDelete前把A_ID值保存下来,再在AfterDelete后利用TADOCOMMAND写SQL语句更新
     update 表 set A_ID = A_ID - 1 where A_ID < :OLD_A_ID 
      

  2.   

    是SQL数据库,谢谢楼上。试一下。
      

  3.   


    -更新操作记录后的记录ID
    declare @id int
    select @id = 2
    --删除
    delete from tb where id = @id
    update tb set id = id - 1 where id > @Id 
    --插入
    update tb set id = id + 1 where id >= @Id 
    insert into tb(id) select @id
      

  4.   

    [Quote=引用 1 楼 flychenjun 的回复:]
    用的什么库? 要是SQL SERVER,可以在触发器里面写 
      for delete事件 SQL codeupdate 表 set A_ID = A_ID - 1 where A_ID < deleted.A_ID  应该是'>'吧
      

  5.   

    有些数据库支持 rowid的虚拟字段,这样你的a_id就不需要了, 触发器也不用,直接select a.rowid, a.* from table as a