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