DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / Fonctions SQL
  • Syntaxe 2 : Effectuer une transaction sur une connexion
  • Imbrication de transactions
  • Blocages et transactions
  • Connecteur Natif MySQL
WINDEV
WindowsLinuxJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac Catalyst
Autres
Procédures stockées
SQLTransaction (Fonction)
En anglais : SQLTransaction
Permet de débuter, valider ou annuler une transaction :
  • soit sur les fichiers d'une base de données ouverte par la fonction SQLConnecte,
  • soit sur les fichiers d'une base de données ouverte par une connexion (OLE DB ou Accès Natif/Connecteur Natif) décrite sous l'éditeur d'analyses, ou par la fonction HOuvreConnexion.
Remarque : Cette fonction est la seule fonction SQL pouvant être utilisée avec les fonctions HFSQL (par exemple, pour réaliser des transactions sur une base de données tierce manipulée avec les fonctions HFSQL).
WINDEVWEBDEV - Code ServeurEtats et RequêtesJavaCode Utilisateur (MCU)AjaxOLE DB
NumConnexion est un entier = SQLConnecte("MaBase", "User", "MotDePasse", "", ...
		"OLEDB", "MonProvider")
SI NumConnexion = 0 ALORS
	SQLInfoGene()
	Erreur("Erreur d'ouverture de la connexion : " + SQL.MesErreur)
SINON
	// Mise en transaction de la connexion
	SQLTransaction(sqlDébut)
	// Modification de la valeur de toutes les rubriques UnFichier.UneRubrique
	SI SQLExec("UPDATE UnFichier SET UneRubrique = 'nouvelle valeur'", ...
		"RequeteModif") = Vrai ALORS
		// Termine la transaction
		SQLTransaction(sqlFin)
	SINON
		SQLInfoGene("RequeteModif")
		Erreur("Erreur d'exécution de la requête : " + SQL.MesErreur)
		// Annulation de la transaction
		SQLTransaction(sqlAnnule)
		// Le contenu du fichier UnFichier n'a pas changé
	FIN
FIN
Syntaxe

Transaction sur les fichiers d'une base de données ouverte par SQLConnecte Masquer les détails

<Résultat> = SQLTransaction(<Indicateur>)
<Résultat> : Booléen
  • Vrai si l'opération a été effectuée,
  • Faux dans le cas contraire.
<Indicateur> : Constante de type Entier
Type d'opération de transaction à effectuer :
sqlAnnuleAnnule la transaction.
sqlDébutCommence la transaction.
sqlFinTermine la transaction.
Remarque : Cette syntaxe n'est pas disponible en Android.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesAndroidWidget AndroidCode Utilisateur (MCU)Ajax

Transaction sur les fichiers d'une base de données ouverte par une connexion décrite dans l'analyse ou par la fonction HOuvreConnexion Masquer les détails

<Résultat> = SQLTransaction(<Indicateur> , <Connexion>)
<Résultat> : Booléen
  • Vrai si l'opération a été effectuée,
  • Faux dans le cas contraire.
<Indicateur> : Constante de type Entier
Type d'opération de transaction à effectuer :
sqlAnnuleAnnule la transaction.
sqlDébutCommence la transaction.
sqlFinTermine la transaction.
<Connexion> : Chaîne de caractères
Nom de la connexion utilisée pour accéder à la base de données. Ce nom a été donné sous l'éditeur d'analyses ou par la fonction HOuvreConnexion. Cette connexion doit avoir été décrite au moment de l'appel de la fonction SQLTransaction. Si la connexion n'est pas ouverte lors de l'appel à la fonction SQLTransaction, la connexion spécifiée est automatiquement ouverte.
Remarques

Syntaxe 2 : Effectuer une transaction sur une connexion

Pour effectuer une transaction sur une connexion, il faut :
  1. Débuter la connexion (fonction SQLTransaction(sqlDébut)).
  2. Effectuer des opérations sur les fichiers de données grâce aux fonctions HFSQL voulues.
  3. Terminer la transaction :
    • soit en validant les opérations effectuées (fonction SQLTransaction(sqlFin)).
    • soit en annulant les opérations effectuées (fonction SQLTransaction(sqlAnnule)).

Imbrication de transactions

Il est possible d'imbriquer les transactions.
Java Il n'est pas possible d'imbriquer des transactions. Une erreur WLangage est générée si une transaction est débutée alors qu'une autre transaction est en cours.

Blocages et transactions

La fonction SQLTransaction ne bloque pas les fichiers de données ni les enregistrements. La fonction SQLTransaction démarre, valide ou annule une transaction.
Si une transaction est démarrée :
  • les écritures dans les tables peuvent poser des blocages (par exemple pour une base de données HFSQL, les écritures posent un blocage de l'enregistrement en cours d'écriture).
  • les lectures peuvent poser des blocages sur certaines bases de données si le mode d'isolation est "repeatable-read" ou "serializable" (attention, ce n'est pas le cas dans une base de données HFSQL).
WINDEVWEBDEV - Code ServeurEtats et RequêtesCode Utilisateur (MCU)AjaxConnecteurs Natifs (Accès Natifs)

Connecteur Natif MySQL

Les fonctions SQLBloque et SQLTransaction permettent de gérer les blocages et les transactions uniquement sur les tables MySQL de type "InnoDB".
Composante : wd300hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
ODBC Sage
Si vous utilisez l'ODBC de Sage, toute requête exécutée passe automatiquement par le commit, il vous est impossible d'annuler la moindre requête
romulus001
12 jan. 2016

Dernière modification : 19/09/2024

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