oracle重置序列
1、一般需要建一序列来实现oracle某一表主键列的自增长,使用的时候直接通过NextVal就可获得唯一值。
2、有时候备份数据库需要重置序列,可以通过以下存储过程来完成():
create or replace procedure rseq(seqname varchar2) as
n number(100);
t_sql varchar2(1000);
begin
execute immediate 'select '||seqname||'.nextval from dual' into n;
n:=-(n-1);
t_sql :='alter sequence '||seqname||' increment by '|| n;
execute immediate t_sql ;
execute immediate 'select '||seqname||'.nextval from dual' into n;
t_sql :='alter sequence '||seqname||' increment by 1 ';
execute immediate t_sql ;
end rseq;
3、重置序列可以使用语句:call rseq(seqname);
但是有时候向表里插入数据,还是提示重复值,可以重建索引:
alter index PK_UINLGORT rebuild;//重建索引
再有问题,再对表进行分析,然后重建索引:
analyze table TABLE_NAME compute statistics;analyze table TABLE_NAME compute statistics for all indexes ;
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:28
阅读量:82
阅读量:54
阅读量:95
阅读量:64