Oracle 复习笔记之序列

转载请出自出处:http://eksliang.iteye.com/blog/2098859

1.序列的作用

  • 序列是用于生成唯一、连续序号的对象
  • 一般用序列来充当数据库表的主键值

2.创建序列语法如下:

 

create sequence s_emp
start with 1      --开始值
increment by 1    --増长值
maxvalue 99999999999 --最大值
minvalue 1           --最小值
cycle                --是否重新开始NOCYCLE 
cache 20             --缓存中的个数,默认是开启的20个
;

参数说明:

  • cycle:当序列达到最大值时或者最小值时,是否继续生成整数。当升序达到最大值时,下一生成的值是最小值。当降序生成达到最大值时,下一生成的值时最大值。
  • nocycle:指定序列生成到最大值或者最小值时,不能再继续生成整数,nocycle是默认值。
  • NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。
  • NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。

   备注:容许设计缺省序列,不需指定任何子句。该序列为上升序列,由1开始,增量为1,没有上限。 

 

    例如:create sequence s_emp;

 

3.删除序列语法如下:

 

 DROP SEQUENCE [user.]sequence_name;

 

 

4.修改序列语法如下:

   例如:将最大值修改为300,缓冲修改为30

 

alter sequence sequence_name
maxvalue 300 cache 30;

 

   修改序列时需要注意几点:

  •  不能修改序列的初始值
  •  start with选项不能修改
  • 序列的最小值不能大于当前值(currval)
  • 序列的最大值不能小于当前值(currval)
  • 在实际开发中,我一般是这样做的,不存在修改,都是直接删除后然后创建,这样多简单。

 

 

5.使用序列:

  

select s_emp.nextval from dual;
select s_emp.currval from dual;

       使用序列时,必须通过伪列nextval和currval引用序列,其中伪列nextval用于返回下一个序列号,而伪列currval用于返回当前序列号。需要注意的是,首次使用序列时,必须使用伪列nextval.

 

 

6:获取序列相关的信息

如果希望查询当前用户定义的序列值,那么可以使用user_sequences视图

select * from user_sequences;

 含义如下:

描述
SEQUENCE_NAME 序列名
MIN_VALUE 最小值
MAX_VALUE 最大值
INCREMENT_BY 序列增量
CYCLE_FLAG 是否循环(Y/N)
CACHE_SIZE 缓冲区大小
LAST_NUMBER 该序列生成或缓冲的最后一个数字

 

 

 

你可能感兴趣的:(Oracle 序列,sequence,Oracle sequence)