CREATE PROCEDURE MAJSOLDEBANQUE PARAMETERS @idCompte : entier @sens : caractère @montant : réel begin IF (sens='c') then UPDATE compte SET CsoldeBanque=CsoldeBanque+@montant WHERE Cid=@idCompte else UPDATE compte SET CsoldeBanque=CsoldeBanque-@montant WHERE Cid=@idCompte endif end CREATE PROCEDURE MAJSOLDEREEL PARAMETERS @idCompte entier @sens : caractère @montant : réel begin IF (@sens='c') then UPDATE compte SET CsoldeReel=CsoldeReel+@montant WHERE Cid=@idCompte else UPDATE compte SET CsoldeReel=CsoldeReel-@montant WHERE Cid=@idCompte endif end CREATE TRIGGER trigInsOperation ON INSERT FOR OPERATION VARIABLES @sens : caractère begin majSoldeReel(new.Ocompte, new.Osens, new.Omontant) IF (new.Oreleve IS NOT NULL) then majSoldeBanque(new.Ocompte, new.Osens, new.Omontant) endif end CREATE TRIGGER trigUpdateOperation ON UPDATE FOR OPERATION VARIABLES @sens : caractère begin // Annulation du montant originel de l"'"opération en affectant // ce même montant en sens inverse IF (old.Osens='c') then @sens='d' else @sens='c' endif majSoldeReel(old.Ocompte, @sens, old.Omontant) IF (old.Oreleve IS NOT NULL) then majSoldeBanque(old.Ocompte, @sens, old.Omontant) endif // MAJ du compte par le nouveau montant majSoldeReel(new.Ocompte, new.Osens, new.Omontant) IF (new.Oreleve IS NOT NULL) then majSoldeBanque(new.Ocompte, new.Osens, new.Omontant) endif end CREATE TRIGGER trigDelOperation ON DELETE FOR OPERATION VARIABLES @sens : caractère begin IF (old.Osens='c') then @sens='d' else @sens='c' endif majSoldeReel(old.Ocompte, @sens, old.Omontant) IF (old.Oreleve IS NOT NULL) then majSoldeBanque(old.Ocompte, @sens, old.Omontant) endif end
Pages: 1 2