CREATE OR REPLACE TRIGGER "TRG_PAGOS_INSERT" BEFORE INSERT ON pagos
FOR EACH ROW
DECLARE saldo NUMERIC(12,2); monto NUMERIC(12,2); saldo_insuficiente EXCEPTION; BEGIN /* obtenemos el monto que se desea pagar y lo guardamos en la variable mont */ monto:= :new.PAGO_MONTO; /* obtenemos el saldo disponible de la CUENTA y lo guardamos en la variable sa ldo */ SELECT CUENTA_SALDO INTO saldo FROM CUENTA WHERE CUENTA_NUMERO= :new.CUENTA_NUMERO AND BANCO_CODIGO= :new.BANCO_CODIGO; /* evaluamos si el MONTO a pagar es mayor al saldo diponible y producimos la e xcepcion */ IF (monto > saldo) THEN /* llamamos la excepción que muestra el mensaje de error */ RAISE saldo_insuficiente; ELSE UPDATE CUENTA SET CUENTA_SALDO= CUENTA_SALDO - monto WHERE BANCO_CODIGO= :new.BANCO_CODIGO AND CUENTA_NUMERO= :new.CUENTA_NUMERO; END IF; EXCEPTION WHEN saldo_insuficiente THEN RAISE_APPLICATION_ERROR(-20004,'Error... El saldo es insuficiente para realiz ar el pago, El saldo actual es:'|| saldo); END;