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_influencia    from 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
>
>
>

Reply via email to