创建
create sequence my_sequence
increment by 1
start with 1
maxvalue 99999
minvalue 1 cycle cache 5;
修改
alter sequence my_sequence start with 1;--无法变更启动序列号
alter sequence my_sequence next number 10;--无法变更当前值,但可以结合 increment by和select修改
alter sequence my_sequence increment by 3;--修改增量
alter sequence my_sequence minvalue 3;--修改最小值
alter sequence my_sequence maxvalue 999;--修改最大值
alter sequence my_sequence nominvalue;--初始化为1
alter sequence my_sequence nocache;--初始化为0
使用
select my_sequence.currval from dual;--当前序列值
select my_sequence.nextval from dual;--下个序列值
Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache,下面简单说一下两者的区别:
如果指定CACHE值,Oracle预先在内存里面放置一些Sequence,这样存取的快些,高并发下效率高,但可能会产生跳号
如果指定NOCACHE值,就不会产生跳号,但在高并发访问时,容易导致row cache lock等待事件