SQL之序列

来源:互联网 发布:linux怎么关机 编辑:程序博客网 时间:2024/06/14 01:59

序列

序列也是数据库对象之一。作用是生成一系列数字。序列常用于为某张表的主键字段提供值使用。

创建序列

创建序列的语法:

CREATE SEQUENCE [schema.]sequence_name    [ START WITH i ] [ INCREMENT BY j ]    [ MAXVALUE m | NOMAXVALUE ]    [ MINVALUE n | NOMINVALUE ]    [ CYCLE | NOCYCLE ][ CACHE p | NOCACHE ]其中:sequence_name是序列名,将创建在schema方案下序列的第一个序列值是i,步进是j如果j是正数,表示递增,如果是负数,表示递减序列可生成的最大值是m,最小值是n如果没有设置任何可选参数,序列的第一个值是1,步进是1CYCLE表示在递增至最大值或递减至最小值之后是否继续生成序列号,若是递减并有最大值,从最大值开始。若是递增有最小值,从最小值开始。若没有,从START WITH 指定的值开始。默认是NOCYCLECACHE用来指定先预取p个数据在缓存中,以提高序列值的生成效率,默认是20
CREATE SEQUENCE seq_emp_id_swmSTART WITH 1INCREMENT BY 1

序列支持两个伪列:

NEXTVAL

获取序列下一个值。若是新创建的序列,那么第一次调用返回的是START WITH 指定的值,以后每次调用都会得到当前序列值加上步长后的数字。
NEXTVAL会导致序列发生不仅,且序列不能回退。

SELECT seq_emp_id_swm.NEXTVALFROM dual

CURRVAL

获取序列当前值,即:最后一次调用NEXTVAL后得到的值,CURRVAL不会导致步进。但是新创的序列至少调用一次NEXTVAL后才可以使用CURRVAL。

SELECT seq_emp_id_swm.CURRVALFROM dual

使用序列为emp_swm表中新插入的数据提供主键字段的值

INSERT INTO emp_swm    (empno,ename,sal,job,deptno)VALUES    (seq_emp_id_swm.NEXTVAL,'JACK',3000,'CLARK',10)

删除序列

语法:DROP SEQUENCE sequence_name;

DROP SEQUENCE seq_emp_id_swm
0 0