You are on page 1of 1

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;

You might also like