本帖最后由 iw1210 于 2012-12-21 14:20:39 编辑

解决方案 »

  1.   

    不能重复利用,会一直增长到最大值,如果创建时候指定了cycle参数,继续从最小值开始增长。
      

  2.   

    -- 可以,只要加个 cycle 关键字表示当序列值达到最大值后,轮循到从最小值开始。-- 例如:14:27:28 HR@myora > create sequence t_seq start with 1 increment by 1 maxvalue 10 nocache cycle;序列已创建。14:27:32 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             1已选择 1 行。14:27:38 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             2已选择 1 行。14:27:39 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             3已选择 1 行。14:27:39 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             4已选择 1 行。14:27:40 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             5已选择 1 行。14:27:41 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             6已选择 1 行。14:27:41 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             7已选择 1 行。14:27:42 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             8已选择 1 行。14:27:42 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             9已选择 1 行。14:27:43 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
            10已选择 1 行。14:27:43 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             1已选择 1 行。14:27:44 HR@myora > select t_seq.nextval from dual;   NEXTVAL
    ----------
             2已选择 1 行。
      

  3.   

    创建序列时 cycle/nocycle 可以标识序列是否循环使用。
    另外,楼主无需担心序列值不够用,只要在业务表的相关字段长度内,序列绝对能到达绝对的长度,
    而且,不同业务也可以创建使用不同的序列
      

  4.   

    这种情况,当序列增长到最大值时,可以修改序列的maxvalue,前提是你的主键字段长度足够
      

  5.   


    这样啊! 如果数据量超大系统,又加上频繁插入删除,比如像银行系统,那么主键值很快就不够用了啊,这样修改也很频繁吧,多麻烦啊,再说系统再运行时能修改maxvalue么?
      

  6.   

    想通过序列作为主键值,就要考虑表的容量,还好的设置max。
    但是现实中往往会出现序列值浪费掉,所以对主键值要求比较严格,考虑组合时间戳+序列