Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/06/2010, 17:51
joluro_50
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con mi primer trigger

Hola,

Haber te echo la mano dejándote la función y trigger que la ejecuta y que están funcionando a la perfección, espero que te puedas guiar:

Función:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION proy.sptractualizafactura() RETURNS TRIGGER
  2. AS $proc$
  3. DECLARE
  4.     vsubtotal NUMERIC;
  5.     vporiva NUMERIC;
  6.     vcantiva NUMERIC;
  7.     vtotal NUMERIC;
  8. BEGIN
  9.     SELECT INTO vsubtotal SUM(total)
  10.         FROM proy.tregistra
  11.         WHERE idfactura=NEW.idfactura;
  12.     IF (FOUND) THEN
  13.         SELECT INTO vporiva, vcantiva  poriva, cantiva
  14.             FROM proy.tfactura
  15.             WHERE idfactura=NEW.idfactura;
  16.         IF (FOUND) THEN
  17.             vcantiva:= (vsubtotal*vporiva)/100;
  18.             vtotal:= vsubtotal+vcantiva;
  19.             UPDATE proy.tfactura
  20.                 SET subtotal=vsubtotal, cantiva=vcantiva, total=vtotal
  21.                 WHERE idfactura=NEW.idfactura;     
  22.         END IF;
  23.     END IF;
  24.     RETURN NEW;
  25. END; $proc$
  26. LANGUAGE 'plpgsql';

Trigger:

Código SQL:
Ver original
  1. CREATE TRIGGER tractualizafactura
  2. AFTER INSERT OR UPDATE
  3. ON proy.tregistra
  4. FOR EACH ROW
  5. EXECUTE PROCEDURE proy.sptractualizafactura();

Saludos.