From: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar> |
---|---|
To: | "Lista Ayuda Pgsql" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Update en trigger disparado por update. Es recursivo? |
Date: | 2005-07-13 16:42:11 |
Message-ID: | 20050713163700.M20589@fcm.unc.edu.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola de nuevo.
On Wed, 13 Jul 2005 13:21:09 -0300, Sebastián Villalba wrote
> Hola amigos. Antes que me olvide. Tengo Postgres 8.03 en Linux.
> Tengo un trigger que controla que cuando se actualice un campo en
> una tabla, ese campo sea como máximo igual a otro valor de campo de
> otra tabla. Entonces hice la siguiente función (volatil) que retorna
> un trigger:
>
> CREATE OR REPLACE FUNCTION "tg_updateCupoCursoPerfil"() RETURNS
> trigger AS $$ DECLARE recCurso RECORD; BEGIN SELECT INTO recCurso
> * FROM cursos WHERE id = new.curso_id; IF (new.cupo > recCurso.cupo)
> THEN new.cupo = recCurso.cupo; END IF; UPDATE cupocursoperfil
> SET cupo = new.cupo WHERE new.perfil_id = old.perfil_id AND
> new.curso_id = old.curso_id; RETURN NULL; END; $$ LANGUAGE plpgsql
> VOLATILE SECURITY DEFINER
Ya solucioné el problema (como siempre, leyendo en la documentación) encontré
que tengo que hacer un "return new" y NO HACER el update. Quedó así:
CREATE OR REPLACE FUNCTION "tg_updateCupoCursoPerfil"() RETURNS
trigger AS $$
DECLARE recCurso RECORD;
BEGIN SELECT INTO recCurso * FROM cursos WHERE id = new.curso_id;
IF (new.cupo > recCurso.cupo) THEN
new.cupo = recCurso.cupo;
END IF;
RETURN new;
END;
$$ LANGUAGE plpgsql
VOLATILE SECURITY DEFINER
Saludos y como siempre, muchísimas gracias.
-
-------------------------------------------
Sebastián Villalba
sebastian(at)fcm(dot)unc(dot)edu(dot)ar
-------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2005-07-13 16:43:53 | Re: Update en trigger disparado por update. Es recursivo? |
Previous Message | Sebastián Villalba | 2005-07-13 16:21:09 | Update en trigger disparado por update. Es recursivo? |