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:13:54
Message-ID: CA+KjtGeuvq9-E11vEw=QsSuEeStvgv8XJe-GqqzSa973=Wf9Tw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

--
José Mercedes Venegas Acevedo
cel Mov RPC 964185205

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2018-11-15 16:37:00 Re: Valor de campo no se actualiza en trigger
Previous Message jvenegasperu 2018-11-15 14:00:10 Re: Valor de campo no se actualiza en trigger