DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Gestion des transactions
  • Présentation
  • Qu'est-ce qu'une transaction ?
  • Utiliser les transactions selon ses besoins
  • Principe
  • Principe des transactions sur des fichiers de données HFSQL
  • Cas particuliers
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Qu'est-ce qu'une transaction ?
Une transaction est un ensemble d'opérations indissociables : soit toutes les opérations de la transaction sont réalisées, soit aucune opération n'est réalisée. La gestion des transactions est le meilleur moyen d'assurer la cohérence d'un ensemble d'écritures indissociables sur des fichiers de données HFSQL.
Par exemple, dans une application bancaire, une opération de virement consiste en un débit pour un compte et un crédit pour un second compte. Il est nécessaire de gérer ces deux opérations dans une seule et même transaction afin d'éviter toute incohérence (en cas de rupture de courant en cours d'opération par exemple).

Utiliser les transactions selon ses besoins

Selon votre situation, voici quelques conseils pour optimiser la gestion des transactions dans vos applications ou sites :
  • Réaliser des transactions dans des applications installées sur des postes fiables (onduleur, une seule application en cours, ...) : transaction disque
    Dans ce cas, les transactions sont utilisées uniquement dans le but de pouvoir annuler simplement une suite d'opérations. Il est possible d'afficher des fenêtres au milieu d'une transaction, de réaliser différents traitements relativement longs, ...
    Chaque opération réalisée pendant la transaction est enregistrée dans un fichier de transaction. L'enregistrement manipulé est bloqué en écriture jusqu'à la validation ou l'annulation de la transaction.
  • Réaliser des écritures fiables dans des fichiers de données (domaine bancaire, comptable, ...).
    Les transactions permettent d'assurer la sécurité d'un ensemble d'opérations. Dans ce cas, il est nécessaire de regrouper toutes les opérations d'écriture dans votre code afin de les exécuter dans une transaction. Le code exécuté pendant la transaction ne doit pas afficher de fenêtres, réaliser de parcours de fichiers de données, ... Ce code doit uniquement comprendre les opérations de modification des fichiers de données.
    Chaque opération réalisée pendant la transaction est enregistrée dans un fichier de transaction. L'enregistrement manipulé est bloqué en écriture jusqu'à la validation ou l'annulation de la transaction.
Principe

Principe des transactions sur des fichiers de données HFSQL

Chaque opération d'écriture effectuée lors d'une transaction est mémorisée dans un fichier des transactions. A tout moment, il est possible d'annuler la transaction : toutes les opérations effectuées depuis le début de la transaction seront annulées.
Lorsque les opérations d'écriture incluses dans la transaction sont terminées, le programme peut valider les opérations de la transaction.
Remarques :
  • HFSQL Classic Le mode d'isolation des transactions est le mode "READ UNCOMMITED".
  • HFSQL Client/Serveur Le mode d'isolation des transactions est défini avec la fonction HTransactionIsolation. Le mode d'isolation par défaut est le mode "READ UNCOMMITED".

Cas particuliers

  • Erreur du programme, la transaction est automatiquement abandonnée.
  • Appel de la fonction FinProgramme, la transaction est automatiquement abandonnée.
  • Annulation d'un test depuis l'éditeur, la transaction est automatiquement abandonnée.
  • Panne de courant ou arrêt brusque de l'application (arrêt de l'application par le gestionnaire de tâches par exemple) :
    Lorsque l'application est relancée, la cohérence de la base de données peut être rétablie :
HFSQL Client/Serveur Cas particuliers spécifiques à HFSQL Client/Serveur :
  • Si le Client est perdu, la transaction est annulée.
  • Le redémarrage du serveur annule les transactions en cours. Attention : la transaction n'est pas annulée si la transaction porte sur un fichier de données avec mot de passe sécurisé. La transaction sera annulée à la prochaine ouverture du fichier de données.
Pour plus de détails sur les différents modes de rétablissement de la cohérence des données, consultez Gestion des cas particuliers.
Liste des exemples associés :
WD Transaction Exemples didactiques (WINDEV) : WD Transaction
[ + ] Ce programme réalisé avec WINDEV est basé sur une analyse simplifiée du type COMMANDE, LIGNECOMMANDE, STOCK. Il illustre le fonctionnement des transactions lors du passage d'une commande.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 31/08/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale