Exercice SQL corrigé procédures stockées (cas compte bancaire)

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

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *