我建了一个序列seq!建立一个表表a,表的主键就是这个序列
我通过seq.nextval为主键向表中插入数据
1 ……
2……
3……
4……
5……
然后我把第二条记录删除了,也就是2…… 这条记录没了 
当我再次插入数据的时候!
我如何才能插入2………… 而不是6…………谢谢注:我在建立序列的时候已经将cycle选项勾上了

解决方案 »

  1.   

    只有用完才会从1再开始。你只能自己找对出空出的号码,然后插入了,sequence 是不会帮你做这个事情的。sequence只负责产生序列号。
      

  2.   

    sequence只负责产生序列号,此序列已经产生过了,序列不会给你找到,只能你自己解决
      

  3.   


    select min(c_pk) from 表a t 
    where c_pk>1 and not exists(select 1 from 表a where c_pk=t.c_pk-1)找到最小的空号
      

  4.   

    序列的作用是唯一性,我觉得没有必要去那么节约
    找最小空号可以用
    select max(c_pk)+1 from 表a t 
    start with c_pk=1
    connect by prior c_pk=c_pk-1;
      

  5.   


    --序列无法实现的,cycle表示循环,如果超过了最大值,就由最小值开始
    序列相当于标识列,没有什么实在的含义
      

  6.   

    同楼上。找最小空号
    select min(id) from (
    select id,rownum rn from table order by id
    ) where id<>rn