在Material表中有一个Number字段,按照顺序存放记录序号的.如果表中有20条记录,则序号从1到20表示;如果将第3和第9条记录删除,则number重新排列,从1到18顺序显示.也就是说删除某一条或某几条记录,其后的记录序号数值变为当前的序号数值,永远都是从1依次递增显示.请问这样的sql如何写?

解决方案 »

  1.   


    --如果直接在表中加这么个字段,中间断号后,不是很好处理。还不如直接在查询时,显示这个编号。如:
    select number=(select count(1) from 表名 where id<=a.id),* from 表名 a
      

  2.   

    用触发器试试吧,假设id为主键:create trigger trig_del on Material
    from delete 
    as  update a set Number=(select count(*) from number where id<=a.id) from Number a
      where exists(select 1 from deleted )
      

  3.   

    用触发器试试吧,假设id为主键: create trigger trig_del on Material 
    for delete 
    as   update a set Number=(select count(*) from number where id <=a.id) from Number a 
      where exists(select 1 from deleted ) 
      

  4.   

    汗,还是有错 create trigger trig_del on Material 
    for delete 
    as   update a set Number=(select count(*) from Material  where id <=a.id) from Material  a 
      where exists(select 1 from deleted )