Ver Mensaje Individual
  #1  
Antiguo 21-08-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Reputación: 24
mosorio Va por buen camino
Question Sobre Triggers

Hola compañeros!

Tengo una inquietud con respecto a los trigger y los momentos de su activación.
Está claro que las tareas internas se ejecutan Antes y Despues,segun la acción, pero trabajando en una aplicación Delphi 6, componentes DBExpress Fireibird 1.5 CR4; Estoy intentando hacer en la misma BD un trigger, de hecho lo he acabado y funciona con el motor, pero la duda que me resalta es que como el trigger esta hecho para que me calcule unos valores del mismo registro que se esta insertando y los inserte en otros campos del mismo, que tanto tiempo de respuesta se tenga para que los resultados se reflejen en los componentes delphi.

El trigger se ejecuta despues de insertar, no he probado si funciona antes de insertar, esta es la duda que tengo si lo hago antes o despues.
Colocaré el trigger para que sea más claro y me den una evaluación del mismo:

Cita:
CREATE TRIGGER "NUEVO_ARTICULO" FOR "ARTICULOSPROVEEDOR"
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE IVA DECIMAL(5,2);
BEGIN
SELECT
1 + (SUM(I.PJEIVA + I.PJERECEQ) /100)
FROM
TIPOIVA I
WHERE
I.IDTIPOIVA = NEW.IDTIPOIVA INTO :IVA;

UPDATE ARTICULOSPROVEEDOR
SET PVENTA = (NEW.PCOSTO * (1 + (NEW.GANANCIA / 100))),
PVENTAIVA = NEW.PCOSTO * (1 + (NEW.GANANCIA / 100)) * :IVA
WHERE IDARTICULO = NEW.IDARTICULO AND
IDPROVEEDOR = NEW.IDPROVEEDOR;
END
Lo que hago en este trigger es tomar los valores nuevos que se insertan del campo PCOSTO y aplicarle la GANANCIA para obenter el PVENTA e igualmente con el PVENTAIVA, lógicamente tomando los valores del IVA del registro correspondiente.
Ahora si: El trigger se ejecuta despues de insertar y claro esta que los valores calculados de los otros campos no se ingresaran, pero no quiero colocar los controles y dejarlos inactivos ya que la idea es que el usuario puede colocar valores en esos campos EJ PVENTA sin necesidad de GANANCIA o PCOSTO.

Espero que me haya dado a entender, es un poco liado el teledramon.

Gracias de antemano.
Responder Con Cita