当前位置:   article > 正文

oracle如何查看sequence的值,Oracle sequence详解

oracle查询sequence

创建sequence

create sequence seq_test

increment by 1

start with 1

noMaxValue

noCycle

cache 10;

create sequence seq_test2

minvalue 1

maxvalue 21

start with 1

increment by 1

cache 20

cycle

order;

minValue: 指定序列最小值。

maxValue: 指定序列最大值。

increment by: 指定序列增长步长,可以为正(升序)、负整数(降序),但不能为0。

start with:指定序列起始数,默认为序列最小值。

noMaxValue:无最大值(实际为10^27或-1),默认。

noMinValue:无最小值(实际为1或-10^26),默认。

cycle:指定序列达到最大值或最小值后继续从头开始生成。

noCycle:不循环生成,默认。

cache:指定数据库内存中预分配的序列值个数,以便快速获取,最小cache值为2。如果系统关闭或者其它情况将会导致序列不连续,也可以设置为nocache。

noCache:不指定缓存数,默认缓存20。

order:指定order条件保证序列按请求顺序生成。

noOrder:不保证序列按请求顺序生成。

删除sequence:

drop sequence seq_test;

drop sequence seq_test2;

查看sequence值:

--查看sequence当前值

select seq_test.currval from dual;

--查看sequence下一个值,sequence发生变化

select seq_test.nextval from dual;

修改sequence:

alter sequence seq_test increment by 2;

alter sequence seq_test maxValue 99999999999;

修改sequence的初始值:

--将当前seq_test的值增加1000

alter sequence seq_test increment by 1000;

select seq_test.nextval from dual;

alter sequence seq_test increment by 1;

select seq_test.currval from dual;

sequence在表中应用:

--新建表

create table t_test(

uuid varchar2(20)

);

--插入sequence值

insert into t_test values(seq_test.nextval);

insert into t_test values(seq_test.nextval);

insert into t_test values(seq_test.nextval);

insert into t_test values(seq_test.nextval);

insert into t_test values(seq_test.nextval);

--查询

select * from t_test;

--删除表

drop table t_test;

sequence和触发器配合应用:

--新建表

create table t_test(

uuid varchar2(20),

name varchar2(20)

);

--新建触发器

create or replace trigger trg_test before insert on t_test for each row

begin

select seq_test.nextval into :new.uuid from dual;

end;

--插入数据

insert into t_test(name) values('n1');

insert into t_test(name) values('n2');

insert into t_test(name) values('n3');

insert into t_test(name) values('n4');

insert into t_test(name) values('n5');

--查询

select * from t_test;

--删除

drop trigger trg_test;

drop table t_test;

查看当前用户下的sequence:

select * from all_sequences;

select * from user_sequences;

select * from user_sequences where sequence_name = upper('seq_test');

select * from user_sequences where sequence_name = upper('seq_test2');

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号