序列
创建
CREATE SEQUENCE [schema.] 序列名
[INCREMENT BY n] # 序列连续两个值之间的间隔n,默认为1
[START WITH n] # 序列起始值n该项省略起始值为1
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE] # 表示序列在达到最大值或最小值之后是否继续产生序列值,NOCYLE表示不再产生,NOCYLE是默认选项。
[CACHE n | NOCACHE]; # 表示序列值被服务器预先分配并存储在内存中,NOCACHE表示不预先分配并存储,CACHE 20是默认选项
# MAXVALUE n :序列最大值;
# MINVALUE n:序列最小值;
# NOMINVALUE:指定序列无最小值
#创建序列test_seq,起始值为10,每次增长 2最大值100最小值9循环序列每次缓存 2,最大值100,最小值9,循环序列,每次缓存 10
# 创建
create sequence test_seq
start with 1
increment by 1
maxvalue 1000
cache 5;
# 使用
insert into student (id,name,sex)
values
(test_seq.nextval,'hanf','男');
select test_seq.currval from dual;
序列属性
CURRVAL:表示序列返回的当前值;
NEXTVAL:表示序列返回的下一个值;
CURRVAL在被引用之前,必须先使用NEXTVAL来产生一个序列值;
可用语句序列名.CURRVAL或序列名.NEXTVAL来访问序列;
使用规则(不能使用):
您可以在下列情况使用NEXTVAL 和CURRVAL:
- 在视图的SELECT列表中
- 包含DISTINCT关键字的SELECT语句中
- 含有GROUP BY, HAVING, ORDER BY子句的SELECT语句中
- SELECT, DELETE, UPDATE 语句的子查询中
- 含有DEFAULT表达式的CREATE TABLE、ALTER TABLE 语句中
修改序列
ALTER SEQUENCE [schema.]sequencename
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
# 修改序列的语法没有start with语句
删除序列
DROP SEQUENCE [schema.]序列名;