Por qué razón no se deben utilizar los campos calculados? Es que en alguna de mis tablas existen varios :) que me recalculan gastos, base imponible, iva, etc de un registro factura cada vez que introduzco un apunte contable que hace referencia a esa factura. ¿Es un mal diseño?
Gracias Carlos Joaniquet Tamburini El 26/10/2010, a las 14:52, Virginia <mavi...@gmail.com> escribió: > > > El 25 de octubre de 2010 23:09, Jaime Casanova <ja...@2ndquadrant.com> > escribió: > 2010/10/25 Virginia <mavi...@gmail.com>: > > Buenas noches, cómo están? quisiera saber si pueden ayudarme con una duda. > > Tengo una tabla con los campos id, campo1, campo2, campo3, total y un > > trigger q lo que debería hacer es que cada vez q inserto un registro en esa > > tabla me sume el campo1 + campo2 + campo3 y actualice ese resultado en el > > campo total. > > Ahora bien, hice el trigger q se dispara desde la misma tabla me crea un > > lazo infinito, cóm puedo resolver esto? o no debo hacer un n trigger q se > > dispare cuando hay un evento en la tabla X para realizar una acción en la > > misma tabla X? > > > > apoyo la idea de la vista (los campos calculados no deberian existir a > menos que haya una buena razon). > > sobre tu problema, no ejecutes otro insert ni un update, por eso se > dispara el trigger deberias tener un codigo algo asi: > > create function fn_trg_calcula() returns trigger as $$ > begin > new.total = new.campo1+new.campo2+new.campo3; > end; > $$ language plpgsql; > > -- > Jaime Casanova www.2ndQuadrant.com > Professional PostgreSQL: Soporte y capacitación de PostgreSQL > > > > > Les comento, el código del trigger es el siguiente: > > CREATE OR REPLACE FUNCTION calcular_total() RETURNS trigger AS ' > BEGIN > IF (tg_op = ''INSERT'') OR (tg_op = ''UPDATE'') THEN > UPDATE promedios SET total= NEW.campo1 + NEW.campo2 + NEW.campo3 WHERE > id = codigo; > END IF; > RETURN NEW; > END > ' LANGUAGE plpgsql; > > > CREATE TRIGGER calcular_total AFTER INSERT OR UPDATE ON promedios > EXECUTE PROCEDURE calcular_total(); >