Re: Pregunta sobre error en disparador

From: "Miguel Beltran R(dot)" <yourpadre(at)gmail(dot)com>
To: miguel <mvillagomez(at)sayab(dot)com(dot)mx>
Cc: "Juan Ramirez" <juanrmiranda(at)hotmail(dot)com>, "PostGreSQL Lista de Ayuda" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Pregunta sobre error en disparador
Date: 2008-11-15 18:19:08
Message-ID: b623c7e40811151019o5f845babk4576317fae2e5af1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

OLD: existe en UPDATE y DELETE
NEW: existe en INSERT y UPDATE
Sin importar si es BEFORE o AFTER, pero si es en after y regresas algo,
simplemente se ignora. (1)

Tu quieres qué marque error antes de que borre o actualize? entonces es
before.

Gracias por la respuesta pero aun cambiando la declaración me sigue
> marcando el error:
>
> ERROR: record "new" is not assigned yet
> DETAIL: The tuple structure of a not-yet-assigned record is
> indeterminate.
> CONTEXT: PL/pgSQL function "movement_trg" line 20 at if
> STATEMENT: DELETE FROM M_Movement
> WHERE M_Movement_ID
> IN ('1000000') AND AD_Client_ID IN (1000000) AND AD_Org_ID IN
> (1000000);
>
>
>
Aqui se ve que quieres borrar un regristo y en la funcion tienes
COALESCE(OLD.MOVEMENTDATE, v_DateNull) <> COALESCE(NEW.MOVEMENTDATE,
v_DateNull)
pero como lo estas llamando desde un delete no existe NEW, a menos que con
el primer IF sea un valor que pones cuando actualizas, entonces estaria en
NEW

(1) http://www.postgresql.org/docs/8.3/static/plpgsql-trigger.html
--
________________________________________
Lo bueno de vivir un dia mas
es saber que nos queda un dia menos de vida

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Alberto Zapata 2008-11-16 00:57:38 integridad ante fallo
Previous Message Fernando Moreno 2008-11-15 18:15:13 Re: Pregunta sobre error en disparador