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.her...@ayres.io>
escribió:

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