美文网首页
Oracle之序列

Oracle之序列

作者: 产品小正 | 来源:发表于2017-10-28 16:14 被阅读0次

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。

创建序列

create sequence 序列名

[START WHITH n] 初始值

[INCREMENT BY n] 设置递增步长

[MINVALUE n | NOMINVALUE] 最小值,NOMINVALUE表示无最小值

[MAXVALUE n | NOMAXVALUE] 最大值,NOMAXVALUE表示无最大值

[CYCLE | NOCYCLE] 循环

[CACHE n | NOCACHE] 内存中存储值得个数

START WHITH n 设置初始值,表示开始的值当未设置的时候,递增序列初始值为minvalue,递减序列初始值为maxvalue。

[INCREMENT BY n] 设置递增步长,n为正数表示递增,负数表示递减。

NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用。CURRVAL 中存放序列的当前值。NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效。

[CYCLE | NOCYCLE] 循环,不循环。循环是指则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

cache的作用:当大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 cache x个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。但cache只是存在缓存中,每一次重启都会重新生成。

create sequence stuno

start with 26

increment by 1

minvalue 1

nomaxvalue

nocycle

cache 20;

使用序列

CURRVAL 返回序列当前值。

NEXTVAL 返回当前序列值增加一个步长后的下一个值。

注;在创建好序列之后无法直接使用currval来返回当前值,第一次要使用nextval返回的序列的初始值:随后的nextval会自动增加定义的increment by值,且currval表示当前值。

create table seq_tab(

stuno number(10),

stuname varchar2(8)

);

insert into seq_tab values(stuno.nextval,'name1');

insert into seq_tab values(stuno.currval,'name2');

查询序列

select * from user_sequences;查看当前user的所用序列。

select * from user_sequences where sequence_name='序列名';查询某一个序列,注意序列名需要大写。

select * from user_sequences;

select * from user_sequences where sequence_name='STUNO';

删除序列

DROP SEQUENCE 序列名;

drop sequence stuno;

相关文章

网友评论

      本文标题:Oracle之序列

      本文链接:https://www.haomeiwen.com/subject/tbaguxtx.html