From: | "Rodrigo Sakai" <rodrigo(at)2bfree(dot)com(dot)br> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | How to avoid (stop) a endless loop in a trigger |
Date: | 2004-03-04 14:54:07 |
Message-ID: | 20040304145407.32236.qmail@hm10.locaweb.com.br |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi people, i have a problem here.
I'm doing a trigger that when a update occurs i need to do an update on the same table (target table), but as known, it causes a endless loop whithin infinit updates. So I need to stop the trigger after it does the first update, is there any way?????
I tried to do a return null, but that was a very bad idea because it stops completly the function fired by a trigger and all its computation is in vain...
The test trigger that i did is like :
CREATE OR REPLACE FUNCTION public.sp_teste_loop() RETURNS trigger AS '
begin
raise notice \'Trigger Fired\';
if (TG_OP = \'INSERT\') then
update teste_trigger
set flg_bool = \'S\'
where codigo=NEW.codigo;
RETURN NEW;
elsif (TG_OP = \'UPDATE\') then
update teste_trigger
set flg_bool = \'N\'
where codigo=NEW.codigo;
RETURN NULL;
end if;
end;
' LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER tr_sp_teste_trigger
BEFORE INSERT OR UPDATE
ON public.teste_trigger
FOR EACH ROW
EXECUTE PROCEDURE public.sp_teste_loop();
Thank for any help and regards!!!!
=====================
Rodrigo Sakai
Database Programmer
rodrigo(at)2bfree(dot)com(dot)br
http://www.2bfree.com.br
Tel: (55) (11) 5083-5577
Fax: (55) (11) 5549-3598
=====================
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Elphick | 2004-03-04 15:13:53 | Re: How to avoid (stop) a endless loop in a trigger |
Previous Message | Christoph Haller | 2004-03-04 12:53:18 | Re: sub-select parameter problem |