create or replace trigger trCuentaBancaria
after insert
on giro
for each row
declare
saldoCuenta cuenta.saldo%type;
saldoLinea lineaCredito.saldo%type;
vIdLinea lineaCredito.idLinea%type;
vLineaUsada integer;
begin
select saldo, idLinea into saldoLinea, vIdLinea
from lineaCredito where idCuenta = :new.idCuenta;
if :new.monto> saldoCuenta + saldoLinea then
dbms_output.put_line('No hay plata !');
else
if :new.monto <= saldoCuenta then
update cuenta
set Saldo = saldo - :new.monto
where idCuenta = :new.idCuenta;
else
update cuenta
set Saldo = 0
where idCuenta = :new.idCuenta and
vLineaUsada = :new.monto - saldoCuenta;
update lineaCredito
set saldo = saldo - vLineaUsada
where idCuenta = :new.idCuenta;
insert into UsoLinea (idUso,idLinea,fecha,monto)
values(:new.idGiro,vIdLinea,
sysdate,vLineaUsada);
end if;
end if;
end;
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.