不可能删掉前面的了 后面的每个序列值都要更改 把前面补上? 然后删除序列 重新建一个seq 起始值为最大值+1?

解决方案 »

  1.   

    这个是没办法的,下次取Sequence的值肯定是下一个了。
      

  2.   

    如果说,你每次删除的都是最后一个值,这种情况可以实现,不过麻烦了点,也不是很实用,但能达到那种效果:
    select seq_users.currval  from dual;当前序列值:修改序列步长为-1:
    Alter Sequence seq_users Increment By -1;
    select seq_users.nextvalfrom dual;
    select seq_users.currval  from dual;
    当前的序列值:
    在将序列的增长步长修改会来:
    Alter Sequence seq_users Increment By 1;
      

  3.   

    不要seq,每次自己查询当前最大值?
      

  4.   

    序列本身是没有意义的,只是一个主键作用。
    如果用select max(id) from table 则效率低,而且会有并发问题。
      

  5.   


    可以用java内的缓存,每次取出几十个或几百个,
    如果用完了就再去取。
    这样并发也没问题了。
      

  6.   

    Sequence没有prevalue一说,序列的值只能增加,不能减小,除非到达最大值且设置了cycle可以回收,序列会从最小值重新开始增加。要实现这个功能只能重新创建序列,或者用sql查出当前值,在插入数据时,加1后作为插入的值,插入数据库