一、序列
序列是一种数据库对象,用来自动产生一组唯一的序号;序列是一种共享式的对象,多个用户可以共同使用序列中的序号。
1、创建序列
CREATE SEQUENCE sequencename
[INCREMENT BY n] 定义序列增长步长,省略为1
[START WITH m] 序列起始值,省略为1
[{MAXVALUE n | NOMAXVALUE}] 序列最大值,
[{MINVALUE n | NOMINVALUE}] 序列最小值
[{CYCLE | NOCYCLE}] 到达最大值或最小值后,继续产生序列(默认NOCYCLE)
[{CACHE n | NOCACHE}]; CACHE默认是20
例子:
CREATE SEQUENCE seq_test
START WITH 1
INCREMENT BY 1
2、使用序列
NEXTVAL 和CURRVAL 伪列
NEXTVAL:
获取序列下一个值。若是新创建的序列,那么第一次调用返回的是START WITH 指定的值,以后每次调用都会得到当前序列值加上步长后的数字。
NEXTVAL会导致序列发生不仅,且序列不能回退。
SELECT seq_test.NEXTVAL FROM dual
CURRVAL :
获取序列当前值,即:最后一次调用NEXTVAL后得到的值,CURRVAL不会导致步进。但是新创的序列至少调用一次NEXTVAL后才可以使用CURRVAL。
SELECT seq_test.CURRVAL FROM dual
3、查询和删除序列
查询序列:
select * from user_sequences
删除序列:
drop sequence seq_test
4、修改序列
修改序列的注意事项:
必须是序列的拥有者或对序列有ALTER 权限
只有将来的序列值会被改变
改变序列的初始值只能通过删除序列之后重建序列的方法实现
例子:
ALTER SEQUENCE seq_test INCREMENT BY 1
未完待续…