Re: Valor de campo no se actualiza en trigger

2018-11-15 Thread jvenegasperu
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

2018-11-15 Thread Juan
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

2018-11-15 Thread Alvaro Herrera
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

2018-11-15 Thread Jaime Casanova
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

2018-11-15 Thread jvenegasperu
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

2018-11-15 Thread jvenegasperu
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