当前位置:   article > 正文

oracle sequence 序列滞后 批量设置_批量 使用sequence 堵塞

批量 使用sequence 堵塞

开发过程中我们会从其他地方导入数据,有时会不太关注id值,导致导入的值大于序列自增的值

以至于会影响到正常使用,因此我们需要将序列增长到合适的位置

例如当前数据库最大的id是1000000

那么我们将所有的序列增长1000000

下面打印出的是执行sql

declare
seq_step number(10):=1;  --步进值
seq_distance number(10):=1000000;  --增长的差值
seq_name varchar2(64);   --序列名
user_name varchar2(16);   --用户名
sql_str varchar2(32767);   --执行更改的sql语句

user_name varchar2(16):='user_name';   --需要更新序列位置的用户名
cursor seq is select * from dba_sequences where sequence_owner=user_name ; 
begin
for cur in seq loop
seq_name:=cur.sequence_name;
sql_str:=sql_str||'alter sequence '|| seq_name ||' increment by '|| seq_distance||';';  --修改序列步进值为增长的差值
sql_str:=sql_str||'select '||seq_name||'.nextval from dual;';                --按差值增长一次
sql_str:=sql_str||'alter sequence '||seq_name||' increment by '|| seq_step||';';         --修改为原来的步进值
end loop;
dbms_output.put_line(sql_str);          --打印出需要执行的sql
end;

得到执行sql后,再执行就行了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/816662
推荐阅读
相关标签
  

闽ICP备14008679号