赞
踩
Oracle自增长的列可以用序列来设置,例如设置自增长ID等。
--创建序列 dept_deptid_seq
create sequence dept_deptid_seq
increment by 10
start with 1
maxvalue 9990
nocycle
nocache
--创建默认序列 no_no_seq
create sequence no_no_seq
序列以(start with n)为第一个序列的值,序列每次增加的值(increment by n),序列的最大值为(maxvalue n),序列的最小值为(minvalue n)
cycle表示如果序列的值大于最大值则开始从最小值循环(默认不循环产生),cache n 表示数据库预先分配n个值保存在内存中(默认20个)
注意:当刚创建好序列后,不能直接查询当前序列的值,必须先用 nextval 查询下一个序列的值,之后才可以使用currval查询当前序列的值。
select sequence_name ,last_number, min_value,max_value,increment_by,cache_size from user_sequences
alter sequence sequence_name increment by 1 cache 3000
--批量修改sequence
declare
v_sql varchar2(2000);
CURSOR seqs IS select sequence_name from user_sequences where user_sequences.CACHE_SIZE<=20 and user_sequences.LAST_NUMBER>10000;
begin
FOR seq IN seqs LOOP
v_sql:='alter sequence '||seq.sequence_name
||' increment by 1 cache 3000';
dbms_output.put_line(v_sql);
execute immediate v_sql;
end loop;
end;
游标放的是要修改的序列,循环取出序列名,进行修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。