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