Re: recursive inner trigger call - Mailing list pgsql-general
From | Bèrto ëd Sèra |
---|---|
Subject | Re: recursive inner trigger call |
Date | |
Msg-id | CAKwGa_97CzM3UnX9QHum+UVB+UBqf-4K3iX-UBv4AdXVT=k21Q@mail.gmail.com Whole thread Raw |
In response to | Re: recursive inner trigger call (Red Light <skydelta98@yahoo.com>) |
List | pgsql-general |
Hi Red,
I have the slight suspicion that you have not understood what NEW and OLD mean, in the context of a trigger, am I correct?
See http://www.postgresql.org/docs/9.0/static/plpgsql-trigger.html
See http://www.postgresql.org/docs/9.0/static/plpgsql-trigger.html
Bèrto
--
==============================
If Pac-Man had affected us as kids, we'd all be running around in a darkened room munching pills and listening to repetitive music.
On 1 December 2011 22:17, Red Light <skydelta98@yahoo.com> wrote:
Hi Dave,when i use before trigger , nothing happen; i mean no cumputation is done (and when i start tu duplicate the same data just by mistake ...)i got the same error.
From: "Gauthier, Dave" <dave.gauthier@intel.com>
To: Red Light <skydelta98@yahoo.com>; "pgsql-general@postgresql.org" <pgsql-general@postgresql.org>
Sent: Thursday, December 1, 2011 8:09 PM
Subject: RE: [GENERAL] recursive inner trigger callYou set the trigger to fire off whenever ed_expore.bv is inserted or updated. Then the trigger updates ed_explore.bv, which fires the update trigger again, etc... . Infinite loop. No?Maybe you just want to use a before trigger to set that value before the insert, then you wouldn't need the recursive after trigger?From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Red Light
Sent: Thursday, December 01, 2011 1:58 PM
To: pgsql-general@postgresql.org
Subject: [GENERAL] recursive inner trigger callHi guys,i got the following problematic : i got a table called bv that have some 'entry data' and i have another column that need to be calculated and put back in the table:here is my table:i created a trigger that do the necessary computation:CREATE OR REPLACE FUNCTION public.store_bv() RETURNS TRIGGER AS $store_bv$
DECLARE
v_vmax_actuel numeric(15,2);
BEGIN
IF (TG_OP = 'UPDATE') OR (TG_OP = 'INSERT') THEN
update ed_explore."bv" set
c_vmax_actuel = ((d_capacite_barrages_new) / (30*86400)) ;
END IF;
RETURN NEW;
END;
$store_bv$ LANGUAGE plpgsql;the declaration of my trigger :CREATE TRIGGER store_bv_trigger
after INSERT OR UPDATE ON ed_explore.bv
FOR EACH ROW EXECUTE PROCEDURE public.store_bv();and now i start to insert my data:insert into public.bv (id_bv,d_capacite_barrages_new) values (1,7324591);commit;then the trigger got executed and goes in an infinite loop,here is the error that i got :ERREUR: dépassement de limite (en profondeur) de la pile
HINT: Augmenter le paramètre « max_stack_depth » après vous être assuré que la
limite de profondeur de la pile de la plateforme est adéquate.
CONTEXT: instruction SQL « update ed_explore."bv" set c_vmax_actuel = ((d_capacite_barrages_new) / (30*86400)) »And thanks for you help
==============================
If Pac-Man had affected us as kids, we'd all be running around in a darkened room munching pills and listening to repetitive music.
pgsql-general by date: