oracle sequence用法_oracle赋值

2022-11-02 16:50:02 浏览数 (1)

创建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’);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180266.html原文链接:https://javaforall.cn

0 人点赞