DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Localisation et accès aux fichiers de données
  • Détection d'une erreur
  • Conseil : Rétablir la cohérence de la base de données
  • Cas d'erreurs
  • Transactions et contexte HFSQL indépendant
  • OLE DB et Connecteurs Natifs
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
Si une transaction est en cours, annule toutes les opérations effectuées sur les fichiers de données en transactions depuis le début de la transaction. Dans ce cas, la transaction est annulée sans interrompre l'exécution du programme.
Si aucune transaction est en cours, rétablit la cohérence de la base de données et annule la transaction qui a échoué (cas d'une coupure de courant par exemple).
Remarque : Une transaction qui a échoué peut être annulée par n'importe quel programme.
Si le fichier de transaction n'est pas partagé, il est automatiquement détruit. Les enregistrements bloqués par les écritures effectuées durant la transaction sont débloqués.
Remarque : La fonction <Source>.TransactionLibère transforme tous les enregistrements "en transaction" en enregistrements "normaux" si ces enregistrements n'appartiennent pas à une transaction actuellement en cours.
AndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst La gestion des transactions est disponible uniquement pour les bases de données HFSQL Client/Serveur.
Exemple
MaConnexion est une Connexion
 
// Début de la transaction sur les fichiers de données associés à la connexion MaConnexion
MaConnexion.TransactionDébut()
Ajout_Commande()
QUAND EXCEPTION DANS
// Ajout de la commande
Commande.Ajoute()
// Validation de l'ajout
MaConnexion.TransactionFin()
FAIRE
// Suppression des lignes de commandes
MaConnexion.TransactionAnnule()
FIN
Syntaxe

Annuler une transaction en cours ou une transaction interrompue sur une connexion Client/Serveur Masquer les détails

<Résultat> = <Connexion>.TransactionAnnule()
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • S'il y a une transaction en cours sur la connexion, elle est annulée.
  • S'il n'y a pas de transactions en cours, les transactions interrompues sont annulées pour la connexion spécifiée.
<Connexion> : Variable de type Connexion
Nom de la variable de type Connexion décrivant la connexion à manipuler.

Annuler une transaction interrompue sur une base de données Client/Serveur (à utiliser si aucune transaction n'est en cours) Masquer les détails

<Résultat> = <Connexion>.TransactionAnnule(<Base de données>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • Seules les transactions interrompues sur la base de données spécifiée sont annulées.
  • Les transactions en cours ne sont pas annulées.
<Connexion> : Variable de type Connexion
Nom de la variable de type Connexion décrivant la connexion à manipuler.
<Base de données> : Chaîne de caractères
Nom de la base de données concernée. Si ce paramètre correspond à une chaîne vide (""), une erreur est affichée.

Annuler une transaction spécifique, liée à une connexion Masquer les détails

<Résultat> = <Connexion>.TransactionAnnule(<Transaction à annuler>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention : Seules les transactions interrompues sur la base de données spécifiée sont annulées.
<Connexion> : Variable de type Connexion
Nom de la variable de type Connexion décrivant la connexion à manipuler.
<Transaction à annuler> : Entier
Identifiant de la transaction à annuler pour la connexion spécifiée. Cet identifiant peut être connu grâce à la fonction <Variable Connexion>.TransactionListe.
Remarques

Localisation et accès aux fichiers de données

Avant d'appeler la fonction <Variable Connexion>.TransactionAnnule, les fichiers de données manipulés par la transaction annulée doivent être :

Détection d'une erreur

Lorsqu'une erreur est détectée par le programme (gestion des erreurs avec QUAND EXCEPTION par exemple), la fonction <Variable Connexion>.TransactionAnnule permet de :

Conseil : Rétablir la cohérence de la base de données

Si une panne (coupure de courant, re-démarrage du poste, ...) survient pendant une transaction, les fichiers de données risquent d'être incohérents : la transaction n'a été ni validée, ni abandonnée. Le fichier de transaction est toujours présent sur le poste.
Pour rétablir la cohérence de la base de données, il est conseillé de proposer dans votre application :
Remarque : cette opération peut être relativement longue (selon le nombre d'opérations effectuées en transaction).

Cas d'erreurs

  • Imbrication de transactions : Il est impossible d'imbriquer les transactions (c'est-à-dire d'appeler la fonction <Variable Connexion>.TransactionDébut ou la fonction <Variable Connexion>.Transaction dans une transaction). Dans ce cas, l'erreur 70031 est générée.
  • Une erreur fatale est affichée dans les cas suivants :
    • Une transaction est débutée sur toutes les connexions alors qu'il existe au moins une connexion en transaction.
    • Une transaction sur une connexion est débutée après avoir commencé une transaction sur toutes les connexions.
    • Une transaction sur toutes les connexions est débutée alors qu'il existe au moins une connexion dont le mode d'isolation n'est pas "Read Uncommitted".

Transactions et contexte HFSQL indépendant

Lors de la copie de contexte, si une transaction est en cours sur le premier contexte, le nouveau contexte n'est pas en transaction. Il faut rappeler la fonction <Variable Connexion>.TransactionDébut (ou la fonction <Variable Connexion>.Transaction) pour démarrer une transaction dans le nouveau contexte.
WINDEVWEBDEV - Code ServeurCode Utilisateur (MCU)AjaxOLE DBConnecteurs Natifs (Accès Natifs)

OLE DB et Connecteurs Natifs

Seules les syntaxes avec connexion sont prises en compte par les Connecteurs Natifs qui gèrent les transactions. Il est également possible d'utiliser la fonction SQLTransaction.
Composante : wd300hf.dll
Version minimum requise
  • Version 25
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 20/06/2023

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