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