创建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