oracle序列

创建序列

oracle可以用sequence关键字创建序列,语法如下:

1
2
3
4
5
6
7
8
create sequence [user.]sequence_name
increment by n
start with n
maxvalue | nomaxvalue
minvalue | nominvalue
cycle | nocycle
cache | nocache
order | noorader

参数说明:

  • user:也就是schema,如果没有表明,则默认是用当前的
  • increment:默认1,即每次增加的步长。-1则是减少
  • start with:开始的数字。如果有设定最小值minvalue,初始值一定不能小于minvalue
  • maxvalue:为序列指定可生成的最大值
  • minvalue:指定序列的最小值
  • nocycle:一直累加,不循环
  • cache:预分配,可以加快访问速度。参数可接受最小值为2。在循环序列中,cache值必须小于cycle的值。cache最大值要小于(ceil(maxvalue-minvalue))/abs(increment)
1
2
3
4
5
6
7
create sequence seq
minvalue 1
maxvalue 10000
start with 1
increment by 1
nocycle
cache 10;

获取序列的时候使用nextval,需要注意的是,第一次返回的其实是初始值,之后返回的是每次完成increment后的值。如:

1
select seq.nextval from dual;
修改序列

修改序列还是用alter,不过呢,并不能修改start参数,需要想要修改start值,需要删除序列再重新创建。

1
alter sequence [user.]sequence_name;
删除序列

删除自然用drop

1
drop sequence sequence_name;
参考文章

create sequence