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