Te da errores porque lo hemos escrito de memoria, sin probar.
Crea primero el procedure:
Código SQL
[-]CREATE OR ALTER PROCEDURE REVERSARINVENTARIO (NUMEROFACTURA INTEGER)
AS
DECLARE VARIABLE CodigoArticulo integer;
DECLARE VARIABLE CantidadARticulos integer;
BEGIN
for select
Codigo, Cantidad
from DETALLES
where Numero=:NumeroFactura
into :CodigoArticulo,
:CantidadArticulos
do begin
update Inventario
set Existencia=Existencia + :CantidadArticulos
where Codigo=:CodigoArticulo;
end
END
Y luego el trigger:
Código SQL
[-]CREATE TRIGGER FACTURAS_AU0 FOR FACTURAS AFTER UPDATE
AS
begin
if ((old.Estado<>new.Estado) and (new.Estado='*')) then
begin
execute procedure ReversarInventario(old.Numero);
end
end
Ahora, si en tu pantalla tienes un dbgrid, por ejemplo, y borras una factura, verás en la base de datos que se ha actualizado el campo existencias con la cantidad de la misma.
Saludos.