Re: Feliz navidad y una consulta.

From: Gerardo Herzig <gerardo(dot)herzig(at)ayres(dot)io>
To: Gonzalo V <gvm2121(at)gmail(dot)com>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Feliz navidad y una consulta.
Date: 2017-12-24 20:15:48
Message-ID: CAM+tAYF0GnBqn+1jT7BVjg6=yn_J6zTM5Qn=6x79zSDH+LZwLw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 Gonzalo V 2017-12-24 20:53:29 Re: Feliz navidad y una consulta.
Previous Message Gerardo Herzig 2017-12-24 19:44:44 Re: Feliz navidad y una consulta.