Oracle序列

一,序列的作用与创建
作用:可以自动的按照既定的规则实现数据的编号操作
创建语法:
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]),
    
    列名称   类型,...
);
 

你可能感兴趣的:(Oracle)