序列用于生成一系列唯一数字的数据库对象。可以在多并发用户下使用,并产生不重复数字,不需要额外的i/o开销
它与视图一样,不占用空间,在数据字典中存储定义信息。
创建序列:
create sequence <seq_name>
[start with n] --序列生成的开始位置,默认递增从minvalue开始,递减从maxvalue开始
[increment by n] --整数将递增,负数将递减,默认1
[minvalue n|nominvalue] --决定序列生成的最小值
[maxvalue n|nomaxvalue] --决定序列生成的最大致
[cache n|nocache] --序列是否预分配,并存储在内存
[cycle|nocycle] --循环,当达到最大或最小值时,复位。当nocycle,达到最大或最小值时,报错。
[order|noorder] --保证按序产生
create seqence id_seq
maxvalue 99999
start with 900
increment by 1
cache 50;
序列的两个常用伪列currval和nextval ,首次使用序列,必须使用nextval
insert into test(id,name) values(id.nextval,'zs');
管理序列:
除start with外,序列的其他子句可以修改。
alter sequence id_seq
maxvalue 99999999
increment by 50
cache 100;
当序列修改后,缓存中数据丢失。
查看序列信息:
desc user_sequences;
删除序列:
drop sequence id_seq;