Domingo 12 de julio de 2009 a las 21:49
Hola Juan Carlos mira estoy tratando de hacer un trigger para realizar una descarga a la tarjeta .. Haber te cuento un poco mira el programa trata de que un estudiante tiene una tarjeta la cual le permite pagar su almuerzo en la cafeteria de la universidad existen 3 tipos de comidas son: desayuno, almuerzo y comida cada uno de los anteriores tiene un valor distinto por ej: desayuno 550 pesos, almuerzo 850, y comida 1000, la tarjeta solo puede ser recargada hasta 5000, pero cada vez que el estudiante vaya a la cafeteria pasa su tarjeta por una maquina la cual realizaria su descarga... Para ejecutar esta descarga en la tarjeta debo crear un trigger pero la verdad no me ha funcionado del todo ya que genera error. Si puedieras colaborarme te agradeceria inmensamente. mi correo es rubliz377@hotmail.com. Me gustaría poder enviarte lo que tengo para que lo revises. Una vez más agradezco que exista gente como tu.
TRIGGER No. 1
create or replace trigger descargar_saldo
after insert or update on reservas
for each row
declare
servicio_reserva number;
begin
update tarjeta set saldo = (
case servicio_reserva
when \'1\' then saldo = :old.saldo - 550
when \'2\' then saldo = :old.saldo - 850
when \'3\' then saldo = :old.saldo - 750
when \'4\' then saldo = :old.saldo - 1400
when \'5\' then saldo = :old.saldo - 1300
when \'6\' then saldo = :old.saldo - 1600
when \'7\' then saldo = :old.saldo - 2150
else
if saldo < 550
dbms_output.put_line (\'no se puede realizar ninguna descarga.Tiene un valor menor de 550\'||saldo));
where codtarjeta = :new.codtarjeta;
end;
/*ademas debe ir una restrccion en donde no deje realizar ninguna descarga menor de 550 pesos.*/
TRIGGER No. 2
create or replace trigger descargar_saldo
after insert or update on reservas
for each row
declare
servicio_reserva number;
begin
case servicio_reserva
when \'1\' then
Update tarjeta set saldo =:old.saldo - 550
where codtarjeta = :new.codtarjeta;
when \'2\' then
Update tarjeta set saldo = :old.saldo - 850
where codtarjeta = :new.codtarjeta;
when \'3\' then
Update tarjeta set saldo = :old.saldo - 750
where codtarjeta = :new.codtarjeta;
when \'4\' then
Update tarjeta set saldo = :old.saldo - 1400
where codtarjeta = :new.codtarjeta;
when \'5\' then
Update tarjeta set saldo = :old.saldo - 1300
where codtarjeta = :new.codtarjeta;
when \'6\' then
Update tarjeta set saldo = :old.saldo - 1600
where codtarjeta = :new.codtarjeta;
when \'7\' then
Update tarjeta set saldo = :old.saldo - 2150
where codtarjeta = :new.codtarjeta
else
if saldo < 550 THEN
dbms_output.put_line (\'no se puede realizar ninguna descarga.Tiene un valor menor de 550\'||saldo);
end;