On Sat, Nov 15, 2008 at 5:44 AM, miguel <[EMAIL PROTECTED]> wrote:
> Tengo el siguiente disparador
>
> CREATE OR REPLACE FUNCTION movement_trg() RETURNS "trigger" AS $$
> DECLARE
> v_DateNull TIMESTAMP := TO_DATE('01-01-1900', 'DD-MM-');
> BEGIN
> IF
>(
> OLD.PROCESSED = 'Y' AND
>
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 declara
En operaciones DELETE, la variable NEW tiene como valor NULL, y su uso en
expresiones no ocasionará errores, pero si intentas acceder a alguno de sus
campos, ahi sí te marcará error, dado que su estructura no está definida.
Primero deberías condicionar el tipo de operación, para que sólo en los
UPD
El sáb, 15-11-2008 a las 14:13 -0100, Juan Ramirez escribió:
> > Subject: Re: [pgsql-es-ayuda] Pregunta sobre error en disparador
> > > ERROR: record "new" is not assigned yet
> > > SQL state: 55000
> > > Detail: The tuple structure of a not
> Subject: Re: [pgsql-es-ayuda] Pregunta sobre error en disparador
> > ERROR: record "new" is not assigned yet
> > SQL state: 55000
> > Detail: The tuple structure of a not-yet-assigned record is
> > indeterminate.
> > Context: PL/pgSQL function "
El sáb, 15-11-2008 a las 04:44 -0600, miguel escribió:
> Tengo el siguiente disparador
>
> CREATE OR REPLACE FUNCTION movement_trg() RETURNS "trigger" AS $$
> DECLARE
> v_DateNull TIMESTAMP := TO_DATE('01-01-1900', 'DD-MM-');
> BEGIN
> IF
> (
> OLD.PROCESSED = 'Y' AND
> (
Tengo el siguiente disparador
CREATE OR REPLACE FUNCTION movement_trg() RETURNS "trigger" AS $$
DECLARE
v_DateNull TIMESTAMP := TO_DATE('01-01-1900', 'DD-MM-');
BEGIN
IF
(
OLD.PROCESSED = 'Y' AND
(/*Inicio Condicion 2*/
(COALESCE(OLD.MOVEMENTDATE, v_DateNu