Exemple : Transfert protégé entre deux comptes
Exemple : Transfert entre deux comptes en SQL standard sous PostgreSQL
1
BEGIN;
2
UPDATE Compte1 SET Solde=Solde+100 WHERE Num=1;
3
UPDATE Compte2 SET Solde=Solde-100 WHERE Num=1;
4
COMMIT;
5
/
Exemple : Transfert entre deux comptes en PL/SQL sous Oracle
1
CREATE OR REPLACE PROCEDURE myTransfC1C2
2
IS
3
BEGIN
4
UPDATE Compte1 SET Solde=Solde+100 WHERE Num=1;
5
UPDATE Compte2 SET Solde=Solde-100 WHERE Num=1;
6
COMMIT;
7
END;
8
/
Exemple : Transfert entre deux comptes en VBA sous Access
1
Sub myTransfC1C2
2
BeginTrans
3
CurrentDb.CreateQueryDef("", "UPDATE Compte1 SET Solde=Solde+100 WHERE Num=1").Execute
4
CurrentDb.CreateQueryDef("", "UPDATE Compte2 SET Solde=Solde-100 WHERE Num=1").Execute
5
CommitTrans
6
End Sub
Fondamental : Transfert protégé
Pour les trois exemples ci-avant le transfert est protégé au sens où soit les deux UPDATE
seront exécutés , soit aucun.
En cas de panne pendant la transaction, le transfert sera annulé (ROLLBACK
système), mais en aucun cas un des deux comptes ne pourra être modifié sans que l'autre le soit (ce qui aurait entraîné une perte ou un gain sur la somme des deux comptes).