赞
踩
创建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');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。