序列是 ORACLE 提供的用于产生一系列唯一数字的数据库对象。

1. 语句

1.1 创建简单序列

  1. create sequence 序列名称
  • 通过序列的伪列来访问序列的值
    • NEXTVAL———返回序列的下一个值
    • CURRVAL———返回序列的当前值
      注意:我们在刚建立序列后,无法提取当前值,只有先提取下一个值时才能再次
      提取当前值。
  1. select 序列名称.nextval from dual;
  2. select 序列名称.currval from dual;

1.2 创建复杂序列

  1. CREATE SEQUENCE sequence //创建序列名称
  2. [INCREMENT BY n] //递增的序列值是 n 如果 n 是正数就递增,如果是负数就递减 默
  3. 认是 1
  4. [START WITH n] //开始的值,递增默认是 minvalue 递减是 maxvalue
  5. [{MAXVALUE n | NOMAXVALUE}] //最大值
  6. [{MINVALUE n | NOMINVALUE}] //最小值
  7. [{CYCLE | NOCYCLE}] //循环/不循环
  8. [{CACHE n | NOCACHE}];//分配并存入到内存中

1.3 修改/删除序列

  • 修改序列:使用 ALTER SEQUENCE 语句修改序列,不能更改序列的 START WITH 参数
  1. -- 修改序列
  2. ALTER SEQUENCE 序列名称 MAXVALUE 5000 CYCLE;
  3. -- 删除序列
  4. DROP SEQUENCE 序列名称;

2. 序列的注意点:

  1. minvalue < start with
  2. 循环序列必须要有maxvalue
  3. 缓存默认值为cache,并且值为20
  4. 缓存cache值>round(ceil(maxvalue-minvalue)/ABS(increment by))