一,序列的作用与创建
作用:可以自动的按照既定的规则实现数据的编号操作
创建语法:
create sequence 序列名称
[increment by 步长] --每次增长的大小
[start with 开始值]
[maxvalue 最大值|nomaxvalue]
[minvalue 最小值|nominvalue]
[cycle|nocycle] --循环
[cache 缓存大小|nocache]; --cache保存的是个数
1,默认序列:所有选项均是默认值,最小值是0,最大值表示无限大
语法:
create sequence 序列名称
要使用一个已经创建完成的序列,则可以使用序列中提供的两个伪列进行操作:
序列名称.currval:表示取得当前序列已经增长的结果,重复调用多次后序列内容不会有任何变化,同时当前序列的大小(last_number)不会改变;
序列名称.nextval:表示取得一个序列的下一次增长值,每次调用一次,序列都会自动增长;
注意:对于给出的伪列,一定是先使用nextval,之后才能使用currval,也就是只有在执行了nextval之后序列才能真正进入到了可用状态。如果设置了缓存,当数据库出现问题,那么有可能这些缓存的数据就会消失了,如果再次使用,就可能出现跳号问题。
2,删除序列
语法:
drop sequence 序列名称
3,创建特殊功能的序列
循环序列:让序列内容在1,3,5,7,9之间循环
create sequence myseq
increment by 2
start with 1
maxvalue 10
minvalue 1
cycle
cache 3;
注意cache值必须小于cycle所有值,cache默认为20,此处cycle只有五个值
修改序列:
alter sequence 序列名称
[increment by 步长]
[maxvalue 最大值|nomaxvalue]
[minvalue 最小值|nominvalue]
[cycle|nocycle] --循环
[cache 缓存大小|nocache];
4,自动序列(Oracle12c)
create table 表名称(
列名称 类型 generated by default as identity([increment by 步长]
[start with 开始值]
[maxvalue 最大值|nomaxvalue]
[minvalue 最小值|nominvalue]
[cycle|nocycle] --循环
[cache 缓存大小|nocache]),
列名称 类型,...
);