序列有increment by 参数的,可设置递增量

解决方案 »

  1.   

    "increment by 1",递增量确实是1。好像问题出在缓冲区预存的20个序列值上了,每次启动使用都是以20个点为变化区间。比方说,下午,重起后,又是61,62,63,64,
    我不知道该怎么解决?
      

  2.   

    正常,cache参数的默认就是20,也就是说每次oracle会把20个序号读入内存,如果重新启动,oracle就会放弃已读入内存的序列值,从下一个开始,如果解决此问题可以创建sequence时设置nocache参数。你选择一下user_sequences表,就明白了
      

  3.   

    zt
    在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 
    1、Create Sequence 
    你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, 
    CREATE SEQUENCE emp_sequence 
    INCREMENT BY 1  -- 每次加几个 
    START WITH 1   -- 从1开始计数 
    NOMAXVALUE    -- 不设置最大值 
    NOCYCLE     -- 一直累加,不循环 
    CACHE 10;        --缓存序列个数,有助于提高效率,但可能造成跳号。一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL 
    CURRVAL=返回 sequence的当前值 
    NEXTVAL=增加sequence的值,然后返回 sequence 值 
    比如: 
    emp_sequence.CURRVAL 
    emp_sequence.NEXTVAL 可以使用sequence的地方: 
    - 不包含子查询、snapshot、VIEW的 SELECT 语句 
    - INSERT语句的子查询中 
    - NSERT语句的VALUES中 
    - UPDATE 的 SET中 可以看如下例子: 
    INSERT INTO emp VALUES 
    (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT empseq.currval FROM DUAL;