Re: Valor de campo no se actualiza en trigger
Alvaro Buen dia Gracias por el consejo de hecho el trigger before esta funcionando en realidad estuve tratando de cambiar a after porque desde qgis donde trabajan mis usuarios cuando hago las cosas con triggers before la accion de guardar tarda un poco mas que cuando lo hago con after. Algun consejo para lograr que el before ocurra mas rapido? estoy suponiendo que en trigger before postgres envia el mensaje de confirmación de guardado a qgis cuando se han ejecutado todas las acciones dentro del trigger en cambio en el after postgres confirma a qgis el guardado en la tabla mientras va ejecutando las demas acciones sin que qgis este enterado de ello y de ahi podria eventualmene ocurrir algun problema de actualizacion como me comentas esto es asi? El jue., 15 nov. 2018 a las 14:36, Alvaro Herrera () escribió: > jvenegasperu escribió: > > Anthony > > > > anthony tenias razon al cambiar a before funciona la asignacion del new > > pero al requerir un after entonces hice la actualizacion del campo con > > update y quedo funcionando gracias > > Hacer modificaciones al registro en un trigger AFTER es mala idea. Puede > traerte problemas después. Las modificaciones al registro deberían > quedar todas hechas en triggers BEFORE. > > Si el trigger BEFORE no te funciona, recomiendo averiguar por qué. > > Saludos > > -- > Álvaro Herrerahttps://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > -- José Mercedes Venegas Acevedo cel Mov RPC 964185205
Re: Generacion de reportes excel con grandes cantidades de datos
Postgres sobre Windows sobre Linux tiene soporte de odbc puedes configurar una fuente de datos desde Excel externa odbc y acceder a las tablas y obtener tu resultados en Excel El jue., 15 de nov. de 2018 16:11, Jaime Casanova < jaime.casan...@2ndquadrant.com> escribió: > On Mon, 12 Nov 2018 at 08:47, Francis Santiago > wrote: > > > > Hola Flor, > > > > Puedes enviar cuales son las configuraciones del harware del servidor, y > la configuración de memory del postgresql.conf, para ayudarte, es difícil > sin saber eso. > > > > Saludos Flor, > > Cómo te explicaba en un correo privado, por error descarte tu últimos > mensaje en lugar de aprobarlo, eso es porque tus correos pasan por > moderación debido a que no se ha registrado en la lista. > > Ahora aprobe tu correo para que pase sin tener que pasar por > moderación. Vuelve a enviar la respuesta anterior, por favor para que > te puedan seguir ayudando. > > > -- > Jaime Casanova www.2ndQuadrant.com > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > >
Re: Valor de campo no se actualiza en trigger
jvenegasperu escribió: > Anthony > > anthony tenias razon al cambiar a before funciona la asignacion del new > pero al requerir un after entonces hice la actualizacion del campo con > update y quedo funcionando gracias Hacer modificaciones al registro en un trigger AFTER es mala idea. Puede traerte problemas después. Las modificaciones al registro deberían quedar todas hechas en triggers BEFORE. Si el trigger BEFORE no te funciona, recomiendo averiguar por qué. Saludos -- Álvaro Herrerahttps://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Re: Generacion de reportes excel con grandes cantidades de datos
On Mon, 12 Nov 2018 at 08:47, Francis Santiago wrote: > > Hola Flor, > > Puedes enviar cuales son las configuraciones del harware del servidor, y la > configuración de memory del postgresql.conf, para ayudarte, es difícil sin > saber eso. > Saludos Flor, Cómo te explicaba en un correo privado, por error descarte tu últimos mensaje en lugar de aprobarlo, eso es porque tus correos pasan por moderación debido a que no se ha registrado en la lista. Ahora aprobe tu correo para que pase sin tener que pasar por moderación. Vuelve a enviar la respuesta anterior, por favor para que te puedan seguir ayudando. -- Jaime Casanova www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Re: Valor de campo no se actualiza en trigger
Anthony anthony tenias razon al cambiar a before funciona la asignacion del new pero al requerir un after entonces hice la actualizacion del campo con update y quedo funcionando gracias El jue., 15 nov. 2018 a las 9:00, jvenegasperu () escribió: > Hola Antony > Buen dia ok > > cambie el trigger a before y cuando le asigno un valor directamente si lo > hace sin embargo cuando trato de asignarle valor desde el resultado de la > consulta no funciona a que podria deberse. > > --Cambiando a BEFORE esto funciona > NEW.total := 1000; > > Pero esto no > select into r2 sum(ml_lineales) from padron_limpieza7 where limpieza_id = > NEW.gid; > NEW.total := r2.sum; > > tambien intente asi > NEW.total := (select sum(ml_lineales) from padron_limpieza7 where > limpieza_id = NEW.gid); > > pero no esta funcionando a que podria deberse > > > > > > > > > > El mié., 14 nov. 2018 a las 13:17, Anthony Sotolongo (< > asotolo...@gmail.com>) escribió: > >> Hola José, estás seguro que el trigger debe ser AFTER? Pues para que >> funcione el nuevo valor del NEW debe ser en un BEFORE. >> >> >> Saludos >> >> El mié., 14 de nov. de 2018 3:06 p.m., jvenegasperu < >> jvenegasp...@gmail.com> escribió: >> >>> Buen dia a todos >>> tengo un trigger sobre una tabla que llame limpieza_colector este >>> funciona bien excepto la ultima instruccion aqui el codigo >>> >>> CREATE TRIGGER limpieza3 >>> AFTER INSERT OR UPDATE >>> ON public.limpieza_colector >>> FOR EACH ROW >>> EXECUTE PROCEDURE public.limpieza3(); >>> >>> CREATE OR REPLACE FUNCTION public.limpieza3() >>> RETURNS trigger AS >>> $BODY$ >>> DECLARE >>> tot numeric(7,2); >>> r record; >>> r2 record; >>> i float; >>> BEGIN >>> >>> >>> select into r radio_influenciafrom limpieza_colector where gid = >>> NEW.gid; >>> >>> i:= r.radio_influencia; >>> >>> --create temp table tabb as >>> truncate opl_tabb; >>> insert into opl_tabb(row_number,gid,st_centroid,b) >>> select >>> v.row_number, >>> l.gid,st_centroid(st_intersection(v.the_geom,st_buffer(l.the_geom,i))), >>> st_distance(st_centroid(st_intersection(v.the_geom,st_buffer(l.the_geom,i))),st_startpoint(st_linemerge(v.the_geom))) >>> as b >>> from al_buzon_geo l join >>> opl_taba v on st_intersects(v.the_geom,st_buffer(l.the_geom,i)) and >>> st_buffer(v.the_geom,i+1) && l.the_geom; >>> >>> --aqui un serie de consultas en otras tablas >>> >>> --forma 1 >>> select into r2 sum(ml_lineales) tot from padron_limpieza7 where >>> limpieza_id = NEW.gid; >>> NEW.total := r2.tot; >>> >>> --forma 2 >>> NEW.total := (select sum(ml_lineales) from padron_limpieza7 where >>> limpieza_id = NEW.gid); >>> >>> --forma 3 >>> NEW.total := 1000; >>> >>>RETURN NEW; >>> END; >>> $BODY$ >>> LANGUAGE plpgsql VOLATILE >>> COST 100; >>> ALTER FUNCTION public.limpieza3() >>> OWNER TO postgres; >>> >>> El hecho es que he intentado actualizar el campo total de las 3 formas >>> que se ven en el codigo el trigger es bastante largo hago una serie de >>> consultas en otras tablas y actualizaciones todas funciona bien excepto de >>> actualizar el campo total de la tabla limpieza_colector >>> >>> lo que ocurre aqui es que desde qgis se dibuja una linea y al momento de >>> grabar ejecuto el trigger alguien tiene alguna experiencia de postgres con >>> qgis. >>> >>> Que me de alguna luz porque el trigger no actualiza el campo en la tabla >>> a que podria deberse si todo lo demas funciona sin problemas >>> >>> Atte >>> >>> -- >>> José Mercedes Venegas Acevedo >>> cel Mov RPC 964185205 >>> >>> >>> > > -- > José Mercedes Venegas Acevedo > cel Mov RPC 964185205 > > > -- José Mercedes Venegas Acevedo cel Mov RPC 964185205
Re: Valor de campo no se actualiza en trigger
Hola Antony Buen dia ok cambie el trigger a before y cuando le asigno un valor directamente si lo hace sin embargo cuando trato de asignarle valor desde el resultado de la consulta no funciona a que podria deberse. --Cambiando a BEFORE esto funciona NEW.total := 1000; Pero esto no select into r2 sum(ml_lineales) from padron_limpieza7 where limpieza_id = NEW.gid; NEW.total := r2.sum; tambien intente asi NEW.total := (select sum(ml_lineales) from padron_limpieza7 where limpieza_id = NEW.gid); pero no esta funcionando a que podria deberse El mié., 14 nov. 2018 a las 13:17, Anthony Sotolongo () escribió: > Hola José, estás seguro que el trigger debe ser AFTER? Pues para que > funcione el nuevo valor del NEW debe ser en un BEFORE. > > > Saludos > > El mié., 14 de nov. de 2018 3:06 p.m., jvenegasperu < > jvenegasp...@gmail.com> escribió: > >> Buen dia a todos >> tengo un trigger sobre una tabla que llame limpieza_colector este >> funciona bien excepto la ultima instruccion aqui el codigo >> >> CREATE TRIGGER limpieza3 >> AFTER INSERT OR UPDATE >> ON public.limpieza_colector >> FOR EACH ROW >> EXECUTE PROCEDURE public.limpieza3(); >> >> CREATE OR REPLACE FUNCTION public.limpieza3() >> RETURNS trigger AS >> $BODY$ >> DECLARE >> tot numeric(7,2); >> r record; >> r2 record; >> i float; >> BEGIN >> >> >> select into r radio_influenciafrom limpieza_colector where gid = >> NEW.gid; >> >> i:= r.radio_influencia; >> >> --create temp table tabb as >> truncate opl_tabb; >> insert into opl_tabb(row_number,gid,st_centroid,b) >> select >> v.row_number, >> l.gid,st_centroid(st_intersection(v.the_geom,st_buffer(l.the_geom,i))), >> st_distance(st_centroid(st_intersection(v.the_geom,st_buffer(l.the_geom,i))),st_startpoint(st_linemerge(v.the_geom))) >> as b >> from al_buzon_geo l join >> opl_taba v on st_intersects(v.the_geom,st_buffer(l.the_geom,i)) and >> st_buffer(v.the_geom,i+1) && l.the_geom; >> >> --aqui un serie de consultas en otras tablas >> >> --forma 1 >> select into r2 sum(ml_lineales) tot from padron_limpieza7 where >> limpieza_id = NEW.gid; >> NEW.total := r2.tot; >> >> --forma 2 >> NEW.total := (select sum(ml_lineales) from padron_limpieza7 where >> limpieza_id = NEW.gid); >> >> --forma 3 >> NEW.total := 1000; >> >>RETURN NEW; >> END; >> $BODY$ >> LANGUAGE plpgsql VOLATILE >> COST 100; >> ALTER FUNCTION public.limpieza3() >> OWNER TO postgres; >> >> El hecho es que he intentado actualizar el campo total de las 3 formas >> que se ven en el codigo el trigger es bastante largo hago una serie de >> consultas en otras tablas y actualizaciones todas funciona bien excepto de >> actualizar el campo total de la tabla limpieza_colector >> >> lo que ocurre aqui es que desde qgis se dibuja una linea y al momento de >> grabar ejecuto el trigger alguien tiene alguna experiencia de postgres con >> qgis. >> >> Que me de alguna luz porque el trigger no actualiza el campo en la tabla >> a que podria deberse si todo lo demas funciona sin problemas >> >> Atte >> >> -- >> José Mercedes Venegas Acevedo >> cel Mov RPC 964185205 >> >> >> -- José Mercedes Venegas Acevedo cel Mov RPC 964185205