SQL Server中数据库可以自增字段,但是Oracle中没有这个选项,实际应用中我们可以使用序列(Sequence)实现想要的功能。



创建Sequence语法如下:



CREATE SEQUENCE SEQUENCE_NAME


?        START WITH 1 --从 1 开始


       INCREMENT BY 1 --每次增加 1


       NOMAXVALUE/MAXVALUE 9999 --最大值,或无最大值


       NOMINVALUE/MINVALUE 1 --最小值,或无最小值


       CYCLE/NOCYCLE --到达最大值之后,是否循环


       CACHE/NOCACHE --指定预先在内存中存放的SEQUENCE,增加存取速度(如果数据库不正常DOWN掉,会跳号,可以用NOCACHE防止这种情况)


       ORDER; --排序?


?



序列提供的方法:


NextVal:


       NextVal是取序列的下一个值,一次NEXTVAL会增加一次sequence的值



CurrVal:


       CurrVal是取序列的当前值



例如:


       insert tablename(id) values(sequence_id.nextval); --sequence_id为序列名



注意:


       第一次NEXTVAL返回初始值,之后的NEXTVAL会自动增加定义的INCREMENT BY值并返回增加后的值。


       CURRVAL总是返回当前SEQUENCE值,在第一次NEXTVAL初始化后才可以使用CURRVAL,否则出错。