欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle 复习笔记之序列

程序员文章站 2022-04-04 15:47:13
...

转载请出自出处: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 该序列生成或缓冲的最后一个数字