El 24 de diciembre de 2017, 17:06, Gonzalo V <gvm2...@gmail.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.her...@ayres.io
> > escribió:
>
>>
>>
>> 2017-12-24 15:10 GMT-03:00 Gonzalo V <gvm2...@gmail.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

Reply via email to