El 24 de diciembre de 2017, 17:53, Gonzalo V <gvm2...@gmail.com> escribió:

> 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
>>
>
Gonzalo, para la proxima:
1) Intenta no hacer top-posting, ya que hace mucho mas complicado de seguir
el thread
2) Si posteas alguna clase de problema o error, evita el "no me anda",
postea cual es *exactamente* el error que te da, asi vamos mas directo a la
fuente del problema.

Saludos
-- 
--
Gerardo Herzig
Principal Consultant at Ayres Data Team
root at Via Postgres Argentina

Reply via email to