uso de trigger en la misma tabla
Publicado por Andres Felipe Bedoya (1 intervención) el 20/12/2018 16:08:55
Buen dia!!
Deseo saber como puedo operar dos columnas para almacenar su resultado en una tercera columna por medio de un trigger.
la funcion que estoy utilizando es la siguiente
donde necesito operar los campos q_151 y q_152 para almacenar su valor en el campo q_153. los tres campos de tipo texto por lo tanto debo realizar su casteo para por realizar la operacion que es el calculo de indice de masa corporal.
el problema es que no me esta realizando la operacion dentro de la tabla simplemente el valor que inserto en el campo q_151 es el que me actualiza en el campo q_153 sin realizar la respectiva operacion.
espero me puedan ayudar, muchas gracias
Deseo saber como puedo operar dos columnas para almacenar su resultado en una tercera columna por medio de un trigger.
la funcion que estoy utilizando es la siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE OR REPLACE FUNCTION ipshorisoes.recalcular_imc()
RETURNS trigger AS
$BODY$
declare
BEGIN
if (old.q_151 != new.q_151) then
new.q_153 := round((cast(new.q_151 as float)/((cast(old.q_152 as int)/100)*(cast(old.q_152 as int)/100)))::numeric,1);
return new;
elsif (old.q_152 != new.q_152) then
new.q_153 := round((cast(old.q_151 as float)/((cast(new.q_152 as int)/100)*(cast(new.q_152 as int)/100)))::numeric,1);
return new;
elsif (old.q_152 != new.q_152 and old.q_151 != new.q_151) then
new.q_153 := round((cast(new.q_151 as float)/((cast(new.q_152 as float)/100)*(cast(new.q_152 as float)/100)))::numeric,1);
RETURN new;
end if;
return null;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION ipshorisoes.recalcular_imc()
OWNER TO postgres;
donde necesito operar los campos q_151 y q_152 para almacenar su valor en el campo q_153. los tres campos de tipo texto por lo tanto debo realizar su casteo para por realizar la operacion que es el calculo de indice de masa corporal.
el problema es que no me esta realizando la operacion dentro de la tabla simplemente el valor que inserto en el campo q_151 es el que me actualiza en el campo q_153 sin realizar la respectiva operacion.
espero me puedan ayudar, muchas gracias
Valora esta pregunta


0