Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: reset a sequence in a trigger
On Thu, 19 May 2005 15:02:18 +0200, Werner Hofmann
<superomega_at_t-online.de> wrote:
>Hallo,
>
>is there a solution to reset a sequence inside a trigger?
>
>I wanted to use this procedure:
>
>####################
>CREATE OR REPLACE PROCEDURE reset_sequence (sequencename IN VARCHAR2) as
> curr_val INTEGER;
>BEGIN
> EXECUTE IMMEDIATE 'alter sequence ' ||sequencename||' MINVALUE 0';
> EXECUTE IMMEDIATE 'SELECT ' ||sequencename ||'.nextval FROM dual'
>INTO curr_val;
> EXECUTE IMMEDIATE 'alter sequence ' ||sequencename||' increment by
>-'||curr_val;
> EXECUTE IMMEDIATE 'SELECT ' ||sequencename ||'.nextval FROM dual' INTO
>curr_val;
> EXECUTE IMMEDIATE 'alter sequence ' ||sequencename||' increment by 1';
>END reset_sequence;
>/
>#####################
>
>but the when I call the 'before insert' or 'after delete' trigger I get
>the message:
>
>--> Commit is not allowed inside a trigger.
>
>Thank you, Werner
Stupid question maybe but why reset it? A sequence is a large number. Are you try to save numbers? You can set a max value and then cycle it. Resetting a sequence just seems like you're going about solving the wrong problem.
Thanks,
Lewis
Author, ItToolBox Blog: An Expert's Guide to Oracle http://blogs.ittoolbox.com/oracle/guide/
Topic Editor, Suite101.com: Oracle Database http://www.suite101.com/welcome.cfm/oracle
Sign up for courses here:
http://www.suite101.com/suiteu/default.cfm/416752
![]() |
![]() |