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