可以新建一个序列,并且注意把序列的起始值设置为当前最大的流水号+1,
create sequence squ_userid
minvalue 1
maxvalue 9999999999999999
start with 10001
increment by 1
nocache; -- 防止跳号执行select seq_userid.currval,seq_userid.nextval into dual可查看;

解决方案 »

  1.   

    当然在执行insert语句时,可把seq_userid.nextval赋给那个流水号的字段即可;
    最大流水号+1的操作可能会引起数据库的并发操作,不太适合使用
      

  2.   

    对啊,用序列.nextval来加1
    这样不会出错
      

  3.   

    如果不用nocache,而使用cache 20 (预先取20个流水号到缓冲区,以提高速度),当数据库的切换时可能会引起跳号;当然事务如果提交失败,后面即使提交成功,流水号也会出现跳号的现象
      

  4.   

    insert into table (id) values (seq_userid.nextval  );
      

  5.   

    select seq_userid.nextval  from dual for update