在网上搜一篇关于重置序列所建的触发器SQL> create or replace procedure seq_reset(v_seqname varchar2) as
2 n number(10);
3 tsql varchar2(100);
4 begin
5 execute immediate 'select '||v_seqname||'.nextval from dual' into n;
6 n:=-(n-1);
7 tsql:='alter sequence '||v_seqname||' increment by '|| n;
8 execute immediate tsql;
9 execute immediate 'select '||v_seqname||'.nextval from dual' into n;
10 tsql:='alter sequence '||v_seqname||' increment by 1';
11 execute immediate tsql;
12 end seq_reset;
自己也试了一下currval能够正确重置可是,所建的触发器是将nextval插入需要自增的字段也就是说重置后的序列再插入数据,自增字段是从2开始计数的请问大家这个问题该怎么解决啊?我一直没想到好的办法
2 n number(10);
3 tsql varchar2(100);
4 begin
5 execute immediate 'select '||v_seqname||'.nextval from dual' into n;
6 n:=-(n-1);
7 tsql:='alter sequence '||v_seqname||' increment by '|| n;
8 execute immediate tsql;
9 execute immediate 'select '||v_seqname||'.nextval from dual' into n;
10 tsql:='alter sequence '||v_seqname||' increment by 1';
11 execute immediate tsql;
12 end seq_reset;
自己也试了一下currval能够正确重置可是,所建的触发器是将nextval插入需要自增的字段也就是说重置后的序列再插入数据,自增字段是从2开始计数的请问大家这个问题该怎么解决啊?我一直没想到好的办法
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货