From: | Virginia <mavir78(at)gmail(dot)com> |
---|---|
To: | Jaime Casanova <jaime(at)2ndquadrant(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: problema con trigger |
Date: | 2010-10-26 12:52:52 |
Message-ID: | AANLkTinD26H8DQs_rSuU0Mw-0o2Ea9TMuMi4KbfK+0Da@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 25 de octubre de 2010 23:09, Jaime Casanova <jaime(at)2ndquadrant(dot)com>escribió:
> 2010/10/25 Virginia <mavir78(at)gmail(dot)com>:
> > Buenas noches, cómo están? quisiera saber si pueden ayudarme con una
> duda.
> > Tengo una tabla con los campos id, campo1, campo2, campo3, total y un
> > trigger q lo que debería hacer es que cada vez q inserto un registro en
> esa
> > tabla me sume el campo1 + campo2 + campo3 y actualice ese resultado en el
> > campo total.
> > Ahora bien, hice el trigger q se dispara desde la misma tabla me crea un
> > lazo infinito, cóm puedo resolver esto? o no debo hacer un n trigger q se
> > dispare cuando hay un evento en la tabla X para realizar una acción en la
> > misma tabla X?
> >
>
> apoyo la idea de la vista (los campos calculados no deberian existir a
> menos que haya una buena razon).
>
> sobre tu problema, no ejecutes otro insert ni un update, por eso se
> dispara el trigger deberias tener un codigo algo asi:
>
> create function fn_trg_calcula() returns trigger as $$
> begin
> new.total = new.campo1+new.campo2+new.campo3;
> end;
> $$ language plpgsql;
>
> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte y capacitación de PostgreSQL
>
Les comento, el código del trigger es el siguiente:
CREATE OR REPLACE FUNCTION calcular_total() RETURNS trigger AS '
BEGIN
IF (tg_op = ''INSERT'') OR (tg_op = ''UPDATE'') THEN
UPDATE promedios SET total= NEW.campo1 + NEW.campo2 + NEW.campo3 WHERE
id = codigo;
END IF;
RETURN NEW;
END
' LANGUAGE plpgsql;
CREATE TRIGGER calcular_total AFTER INSERT OR UPDATE ON promedios
EXECUTE PROCEDURE calcular_total();
From | Date | Subject | |
---|---|---|---|
Next Message | Virginia | 2010-10-26 12:54:07 | Re: problema con trigger |
Previous Message | roberto | 2010-10-26 12:20:40 | Cambiar disco de tablespace |