Re: Update en trigger disparado por update. Es recursivo?

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
-------------------------------------------

In response to

Browse pgsql-es-ayuda by date

  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?