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