ROLLBACK

Sommaire


Rollbackpermet d'abandonner une transaction.

 

Syntaxe

   Rollback

 

Exemples

   # Transaction : on débite un compte CPT_D et crédite un compte CPT_C
   # d'une même valeur TRANSFERT. Au retour du sous-programme,
   # SUCCES=1 si tout s'est bien passé, et SUCCES=0 sinon.
   #
    TRANSFERT_SOMME
   #
   #   Début de transaction
       Trbegin [CPT]
   #
   #   On débite le premier compte
       Readlock [CPT]NOCPT=CPT_D
       If fstat : Goto ABANDON : Endif
       [CPT]SOLDE -= TRANSFERT
       Rewrite [CPT]
       If fstat : Goto ABANDON : Endif
   #
   #   On crédite le second compte
       Readlock [CPT]NOCPT = CPT_C
       If fstat : Goto ABANDON : Endif
       [CPT]SOLDE += TRANSFERT
       Rewrite [CPT]
       If fstat : Goto ABANDON : Endif
   #
   #   Validation de la transaction et retour.
       Commit : SUCCES = 1
    Return
   #
   #   Annulation de la transaction et retour en cas d'erreur
    ABANDON
      
Rollback : SUCCES = 0
    Return

 

Description et commentaires

Rollback permet d'annuler une transaction, c'est-à-dire un ensemble d'opérations de mise à jour de fichiers et/ou de compteurs ainsi que des opération de verrouillage ayant débuté par l'instruction Trbegin.

Les tables sont restaurées dans l'état où elles étaient avant l'initiation de la transaction puis refermées et tous les verrous sont levés. Seuls les verrous posés sur des symboles avant le début de la transaction ne le seront pas. La transaction n'est pas inscrite dans le fichier de journalisation - le cas échéant.

Un Rollbackne peut être fait que par le traitement ou le sous-programmme ayant initié latransaction. C'est le cas en particulier pour les programmes de gestiond'erreur, de gestion d'interruption ou de déconnexion.

 

Remarques

En cas d'interruption d'un programme ou d'un sous-programme ayant initié unetransaction un Rollbacksera fait automatiquement. Ceci est valable dans les cas suivants :

L'utilisateur sera averti de cette annulation.

Alors que l'instruction Commit est très rapide, Rollback est une opération qui peut êtrelongue puisqu'il s'agit de "rejouer" à l'envers toutes lesmodifications apportées à la base de données. Il ne faut donc pas en faire unoutil de programmation.

Rollbackne porte évidemment pas sur les variables et les fichiers séquentiels ouvertspar Openo et Openio.

Exemple :
$TR : # Début de latransaction
Trbegin
If [V]COMP = 0
[V]COMP = [C]CPT
Endif
[C]CPT += 1
If fstat = 1 :
# Encas de verrouillage
Rollback : Goto TR : # de [C]CPT par unautre
Endif :
# adonixqui l'incremente
Commit
....

Supposons que [V]COMP soit nul au départet que [C]CPT soit à 23. Si on n'a aucun problème on aura à la fin [V]COMP à 23et [C]CPT à 24. Mais dans le cas où le même traitement a été lancé sur un autreposte, on aura à la fin [V]COMP à 23 et [C]CPT à 25.

Erreurs associées

Erreur

Description

ERRET(32)

Latransaction a été initiée à un autre niveau.

PADTRAN(48)

Pasde transaction en cours.

 

Mots-clés associés

TRBEGIN - COMMIT - ONERRGO - ONINTGO - ACTIHGUP


SOMMAIRE

Adonix X3(r) L4G
Copyright (c) Adonix 1999 - All rights reserved