Oracle序列(sequence)的创建、使用、修改、删除
原创    javacoder    发表于:2017-03-28 19:50:13
  阅读 :96   收藏   编辑

序列是数据库对象一种。多个用户可以通过序列生成连续的数字以此来实现主键字段的自动、唯一增长,并且一个序列可为多列、多表同时使用。

创建语法:
CREATE SEQUENCE sequence_name      --sequence_name 序列名称
[START WITH num]                   --从某一个整数开始,升序默认值是1,降序默认值是-1。
[INCREMENT BY increment]           --增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1
[MAXVALUE num|NOMAXVALUE]          --最大值|无最大值(实际为10^27或-1)。default
[MINVALUE num|NOMINVALUE]          --最小值|无最小值(实际为1或-10^26)。Default
[CYCLE|NOCYCLE]                    --指定序列达到最大值或最小值后继续从头开始生成。|不循环生成。Default.
[CACHE num|NOCACHE]                --指定数据库内存中预分配的序列值个数,以便快速获取。最小cache值为2|不缓存
[ORDER|NOORDER]                    --指定order条件保证序列按请求顺序生成|不保证序列按请求顺序生成
创建例子:
CREATE SEQUENCE SEQ_ORDER_ID  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE ;
序列使用
--以通过序列对象的CURRVAL和NEXTVAL两个“伪列”分别访问该序列的当前值和下一个值
 SELECT SEQ_ORDER_ID.NEXTVAL FROM DUAL;
 SELECT SEQ_ORDER_ID.CURRVAL FROM DUAL;
序列的修改

使用ALTER SEQUENCE sequence_name可以修改序列,在修改序列时有如下限制:

  1. 不能修改序列的初始值。

  2. 最小值不能大于当前值。

  3. 最大值不能小于当前值。

序列的删除
DROP SEQUENCE sequence_name
评论
条评论