序列是 ORACLE 提供的用于产生一系列唯一数字的数据库对象。
1. 语句
1.1 创建简单序列
create sequence 序列名称
- 通过序列的伪列来访问序列的值
- NEXTVAL———返回序列的下一个值
- CURRVAL———返回序列的当前值
注意:我们在刚建立序列后,无法提取当前值,只有先提取下一个值时才能再次
提取当前值。
select 序列名称.nextval from dual;select 序列名称.currval from dual;
1.2 创建复杂序列
CREATE SEQUENCE sequence //创建序列名称[INCREMENT BY n] //递增的序列值是 n 如果 n 是正数就递增,如果是负数就递减 默认是 1[START WITH n] //开始的值,递增默认是 minvalue 递减是 maxvalue[{MAXVALUE n | NOMAXVALUE}] //最大值[{MINVALUE n | NOMINVALUE}] //最小值[{CYCLE | NOCYCLE}] //循环/不循环[{CACHE n | NOCACHE}];//分配并存入到内存中
1.3 修改/删除序列
- 修改序列:使用 ALTER SEQUENCE 语句修改序列,不能更改序列的 START WITH 参数
-- 修改序列ALTER SEQUENCE 序列名称 MAXVALUE 5000 CYCLE;-- 删除序列DROP SEQUENCE 序列名称;
2. 序列的注意点:
- minvalue < start with
- 循环序列必须要有maxvalue
- 缓存默认值为cache,并且值为20
- 缓存cache值>round(ceil(maxvalue-minvalue)/ABS(increment by))
