|
|
|
|
|
- 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
Transactions : Sécurisez vos traitements sur des fichiers de données HFSQL
Disponible uniquement avec ces types de connexion
Ce chapitre aborde les sujets suivants : 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 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 : - Le mode d'isolation des transactions est le mode "READ UNCOMMITED".
- 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".
- Les transactions ne sont pas disponibles sur des fichiers de données Hyper File 5.5.
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 :
Liste des exemples associés :
|
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.
|
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|