序列是由数据库自动生成的,一组唯一的整数值。可以被多个用户所共享。
序列用处:生成主键,可以替代应用程序中生成主键的方法。
序列创建:
create sequence <序列名称>
[increment by n] #递增值,默认1,可以为负数
[start with n] #从哪个数字开始,默认1
[maxvalue n] #最大值,默认无
[minvalue n] #最小值
[cycle | nocycle] #是否循环,当序列到最大值或者最小值时,下一个可以使用的序号则为开始值。
[cache n|nocache] #将序列中接下来的n个序号在内存中进行缓存。
[order | noorder] #强制集群中所有的实例协同递增序列
SCOTT@myh>create sequence list1
2 start with 20
3 maxvalue 40
4 cycle
5 increment by 2;
序列中两个重要的属性:
currval——当前数值
nextval——下一个值。
删除序列:
SCOTT@myh>drop sequence list5;
应用:
SCOTT@myh>insert into test(deptno) values(list6.nextval);
序列不连续的情况:
- 回滚
- 多个表使用同一个序列
- 系统异常