一、概述

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;

自律成就未来