1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE my_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE 一直累加,不循环
CACHE 10;
一旦定义了my_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
my_sequence.CURRVAL
my_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- INSERT语句的VALUES中
- UPDATE 的 SET中
2、Alter和Drop序列
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start值 以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create .
可以通过Alert Sequence子句来修改序列, 但是我在修改序列中常常会报错 而且很频繁.修改序列内容有如下限制:
(1)不能修改序列的初始值
(2)序列的最小值不能大于当前值
(3)序列的最大值不能小于当前值
---修改序列alter sequence my_sequence increment by 2;
---删除序列
drop sequence my_sequence;