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');

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值