CREATE SEQUENCE SEQ
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999999999999999999999
MINVALUE 1
CYCLE   --循环,当达到最大值时,自动从1开始
CACHE 20
ORDER --保证顺序
/

解决方案 »

  1.   

    1 为这个记录号增加唯一性约束。
    2 create sequence s ... cycle;(...部分省略,自己填)
    3 通过序列插入数据,当遇到重复记录号时,序列值将自增1,但记录无法插入(会报违反唯一约束条件),这时可继续插入,直至插入成功。当序列到达最大值后,会自动从最小值循环。
      

  2.   

    CREATE SEQUENCE SEQ
    INCREMENT BY 1
    START WITH 1
    MAXVALUE 999999999999999999999999999
    MINVALUE 1
    CYCLE   --循环,当达到最大值时,自动从1开始
    CACHE 20
    ORDER --保证顺序
    /
      

  3.   

    CACHE 20 是什么意思啊
    谢谢
      

  4.   

    CACHE 20 是什么意思啊?如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
      

  5.   

    比如我创建一个序列 ling
    那么我如何在每次插入一条纪录的时候
    insert into aaa values (ling.nextval);
    这样只能从序列的当前值开始检索
    我如何让序列每次都从1开始呢
    谢谢
      

  6.   

    drop sequence ling;
    再重建
      

  7.   

    没有别的办法了吗
    一定要每次都重新drop一下
    然后再create吗
      

  8.   

    For 短消息:
    影响Sequence的初始化参数: 
    SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。 另外:
    Alter Sequence 
      你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create . Alter sequence 的例子 :ALTER SEQUENCE emp_sequence 
      INCREMENT BY 10 
      MAXVALUE 10000 
      CYCLE   -- 到10000后从头开始 
      NOCACHE ;