Re: Feliz navidad y una consulta.

From: Gonzalo V <gvm2121(at)gmail(dot)com>
To: Gerardo Herzig <gerardo(dot)herzig(at)ayres(dot)io>
Cc: FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Feliz navidad y una consulta.
Date: 2017-12-24 20:53:29
Message-ID: CAF40P_3ZZY_KZ30DBRgZzdJ3SVQnr8_GDS1DurLYY6fUcXbtfg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ya lo arreglé. habia que arreglar FOR EACH ROW

CREATE TRIGGER vencimientos_trigger AFTER INSERT OR UPDATE ON
"Facturacion_registro" *for each row* EXECUTE PROCEDURE
actualiza_fact_registro_trigger();

saludos y feliz navidad!!

Saludos,
Gonzalo

El 24 de diciembre de 2017, 17:15, Gerardo Herzig <gerardo(dot)herzig(at)ayres(dot)io>
escribió:

>
>
> El 24 de diciembre de 2017, 17:06, Gonzalo V <gvm2121(at)gmail(dot)com> escribió:
>
>> Hola gerardo, gracias por responder. Imprime el siguiente error
>> ERROR: record "new" is not assigned yet
>> DETAIL: The tuple structure of a not-yet-assigned record is
>> indeterminate.
>> CONTEXT: SQL statement "Update "Facturacion_registro" f set
>> "Cod_sucursal"=(select s."ID" from sucursales s where
>>
>> s."DIRECCION"=NEW."Dirección")
>> from sucursales s
>> where
>> s."DIRECCION"=NEW."Dirección" and f."Cod_sucursal" is null"
>> PL/pgSQL function actualiza_fact_registro_trigger() line 3 at SQL
>> statement
>> SQL state: 55000
>>
>> Saludos,
>> Gonzalo
>>
>> El 24 de diciembre de 2017, 16:44, Gerardo Herzig <
>> gerardo(dot)herzig(at)ayres(dot)io> escribió:
>>
>>>
>>>
>>> 2017-12-24 15:10 GMT-03:00 Gonzalo V <gvm2121(at)gmail(dot)com>:
>>>
>>>> Feliz navidad a todos!
>>>> Tengo una duda, si me pueden ayudar en esta navidad...
>>>> Necesito crear una funcion trigger que updatee unos datos a partir de
>>>> otras tablas pero no me funciona, alguien sale como se hace?. Lo que llevo
>>>> hecho, no me funciona.
>>>> De antemano, muchas gracias y feliz navidad y año nuevo.
>>>>
>>>>
>>>> CREATE OR REPLACE FUNCTION actualiza_fact_registro_trigger() RETURNS
>>>> TRIGGER AS $$
>>>> BEGIN
>>>> Update "Facturacion_registro" f set "Cod_sucursal"=(select s."ID" from
>>>> sucursales s where
>>>>
>>>> s."DIRECCION"=f."Dirección")
>>>> from sucursales s
>>>> where
>>>> s."RUT"=f."Rut" and s."DIRECCION"=f."Dirección" and f."Cod_sucursal" is
>>>> null;
>>>> RETURN new;
>>>> END
>>>> $$
>>>> LANGUAGE 'plpgsql';
>>>>
>>>> CREATE TRIGGER vencimientos_trigger AFTER INSERT OR UPDATE ON
>>>> "Facturacion_registro" EXECUTE PROCEDURE actualiza_fact_registro_trigge
>>>> r();
>>>>
>>>>
>>>>
>>>>
>>>> Saludos,
>>>> Gonzalo
>>>>
>>>
>>>
>>> No queda claro que es lo que "no funciona". Si no me equivoco, la
>>> funcion del trigger no usa para nada los valores del registro que se esta
>>> insertando, por lo que, para empezar, proba directamente ese SQL de la
>>> funcion, tiralo via 'psql' como un query comun y corriente. Tal vez sucede
>>> que los WHERE de tu query no satisfacen ningun registro, pero de nuevo, no
>>> se entiende cual es el problema.
>>>
>>> HTH
>>> --
>>> --
>>> Gerardo Herzig
>>> Principal Consultant at Ayres Data Team
>>> root at Via Postgres Argentina
>>>
>>
>>
> Ah pero ahi SI estas usando NEW. No es el mismo codigo del OP.
> Si vos queres actualizar el registro que se esta insertando, podes asignar
> directamente a NEW: Algo como...
>
> new."Cod_sucursal" = select s."ID" from sucursales s where
> s."DIRECCION"=NEW."Dirección"
>
> HTH
> --
> --
> Gerardo Herzig
> Principal Consultant at Ayres Data Team
> root at Via Postgres Argentina
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gerardo Herzig 2017-12-25 21:04:31 Re: Feliz navidad y una consulta.
Previous Message Gerardo Herzig 2017-12-24 20:15:48 Re: Feliz navidad y una consulta.