Re: Valor de campo no se actualiza en trigger

From: jvenegasperu <jvenegasperu(at)gmail(dot)com>
To: Anthony Sotolongo León <asotolongo(at)gmail(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Valor de campo no se actualiza en trigger
Date: 2018-11-15 14:00:10
Message-ID: CA+KjtGdWd9b5ch0ge1FJkdwJqqKRuQoxn_PDoRvMJjyFAM6zLA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 (<asotolongo(at)gmail(dot)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 <
> jvenegasperu(at)gmail(dot)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
>>
>>
>>

--
José Mercedes Venegas Acevedo
cel Mov RPC 964185205

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jvenegasperu 2018-11-15 14:13:54 Re: Valor de campo no se actualiza en trigger
Previous Message Anthony Sotolongo 2018-11-14 18:17:45 Re: Valor de campo no se actualiza en trigger