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 <[email protected]> escribió: > > > El 24 de diciembre de 2017, 17:06, Gonzalo V <[email protected]> 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 < >> [email protected]> escribió: >> >>> >>> >>> 2017-12-24 15:10 GMT-03:00 Gonzalo V <[email protected]>: >>> >>>> 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 >
