一、概述
sequence是序列号的意思,每次取的时候它会自动增加。sequence与表没有从属关系,与表一样属于用户。 二、主要内容 1、Create Sequence语法 --首先用户要有CREATE SEQUENCE或者CREATE ANY SEQUENCE的权限。 CREATE SEQUENCE seqname [ INCREMENT increment ] [ MINVALUE minvalue ] [ MAXVALUE maxvalue ] [ START start ] [ CACHE cache ] [ CYCLE ][order]
例子: CREATE SEQUENCE seq minvalue 1 --最小值 INCREMENT BY 1 --递增1 START WITH 1 --从1开始 NOMAXvalue --无最大值 NOCYCLE --不循环 CACHE 100; --缓存100个序列号
2、使用sequence 定义好sequence后,你就可以用currVal,nextVal取得值。 CurrVal:返回 sequence的当前值 NextVal:返回sequence的下一个值 select seq.currval from dual select seq.nextval from dual 3.在Sql语句中可以使用sequence的地方: (1)不包含子查询、snapshot、VIEW的 SELECT 语句 (2)INSERT语句的子查询中
(3)INSERT语句的values中 (4)UPDATE 的 SET中 例如: insert into student(id,name) values(seq.Nextval,'jack');
注意: 第一次NEXTVAL返回的是初始值,随后的NEXTVAL会返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则报如下错误: ORA-08002 序列currval尚未在会话中定义。
使用一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你多次执行包含NEXTVAL的一条语句,其值就是不一样的。 3、修改sequence参数 拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence再create。 例: alter sequence SEQ maxvalue 9999999; alter sequence SEQ cache 10; 4、Drop Sequence DROP SEQUENCE seq;
自律成就未来