现在情况是这样,1个300条的记录表,设了一个ID的字段,用的序列,结果发现序列不能保证连续性。现在300条记录,ID都到1200多了,现在请高手指点下,如何补救这个错误?把300条记录重新排序???就是按时间从1-300重新给ID赋值

解决方案 »

  1.   

    update tab_name a 
    set a.id = 
     (select rid from 
       (select rownum as rid, pk_col from 
          (select pk_col from tab_name order by date_col)
        )b 
       where b.pk_col = a.pk_col 
      )
      

  2.   

    其实保持连续性没啥意义.写个函数吧
    1.建一个新表,字段内容一样,最好再加一个流水号(ID)
    2.根据日期排序循环这300条记录;重新往新表里面插数据(插入时加上当前最大ID)
    3.删除旧表
    4.更名新表
      

  3.   

    update tab_name tn
    set tn.id = (select rownum from tab_name);这样就可以拉!~