Ver Mensaje Individual
  #1  
Antiguo 16-09-2004
marti marti is offline
Registrado
 
Registrado: sep 2004
Posts: 4
Reputación: 0
marti Va por buen camino
triggers sobre vistas

Deseo hacer un trigger sobre una vista, de forma tal que realice un cálculo sobre algún campo de la vista.

La vista luce asi:

Código SQL [-]
CREATE VIEW ITEM_INVENTARIO_INFO (
  ID_ITEM, 
  ID_BODEGA, 
  CANTIDAD, 
  COSTO, 
  TOTAL_COSTO, 
  PRIORIDAD
) AS
SELECT CD.ID_ITEM,CD.ID_BODEGA,CD.CANTIDAD,25.0,0.0,5
FROM REMISION C INNER JOIN REMISION_DET CD ON (C.ID_EMPRESA=CD.ID_EMPRESA AND C.ID_SUCURSAL=CD.ID_SUCURSAL AND C.ID_TIPO_DOC = CD.ID_TIPO_DOC AND C.NUMERO = CD.NUMERO)
UNION
SELECT CD.ID_ITEM,CD.ID_BODEGA,CD.CANTIDAD,25.0,0.0,5
FROM FACTURA C INNER JOIN FACTURA_DET CD ON (C.ID_EMPRESA=CD.ID_EMPRESA AND C.ID_SUCURSAL=CD.ID_SUCURSAL AND C.ID_TIPO_DOC = CD.ID_TIPO_DOC AND C.NUMERO = CD.NUMERO)
;

y el trigger luce asi:

Código SQL [-]
CREATE TRIGGER TRIG_ITEM_INVENTARIO_INFO FOR ITEM_INVENTARIO_INFO 
ACTIVE AFTER UPDATE POSITION 0
as
BEGIN
  NEW.TOTAL_COSTO = NEW.CANTIDAD* NEW.COSTO;
END
 ^

El motor de la base de datos no genera ningún tipo de error al crear el trigger sobre la vista pero no hace lo que deseo que haga.

La vista me devuelve los siguientes registros

Código:
 
ID_ITEM  ID_BODEGA CANTIDAD COSTO TOTAL_COSTO  PRIORIDAD	
0001	   01			 20		  25			  0			5	
0001	   01			 50		  25			  0			5	
0002	   01			 10		  25			  0			5	
0002	   01			 20		  25			  0			5	
0003	   01			  2		   25			  0			5	
0003	   01			100		  25			  0			5
El campo Total deberia tener un valor mayor a cero (cantidad*costo)

Es posible realizar este tipo de actualizaciones con Firebird?

Gracias por su colaboración
Responder Con Cita