Transactions

4D - Documentation   Français   English   German   Japanese   Manuel de référence SQL 4D, Sommaire   Manuel de référence SQL 4D, Index   Retour   Précédent   Suivant

version 11


Une transaction est un ensemble d'instructions SQL exécutées en bloc. Soit toutes les instructions sont exécutées, soit aucune d'entre elles. Les transactions placent des verrous logiques pendant leur exécution afin de préserver l'intégrité des données. Si la transaction se termine correctement, vous pouvez appeler la commande COMMIT afin de valider et d'enregistrer définitivement les modifications effectuées. Dans le cas contraire, appelez la commande ROLLBACK afin d'annuler toutes les modifications et de restituer la base de données dans son état précédent.

Au niveau de la base de données, il n'y a pas de différence entre une transaction 4D et une transaction SQL. Les deux types de transactions partagent les mêmes données et le même process. Les instructions SQL incluses dans une structure Debut SQL/Fin SQL, la commande CHERCHER PAR SQL et les commandes SQL génériques intégrées appliquées à la base locale sont toujours exécutées dans le même contexte que les commandes 4D standard.

Note : 4D propose l'option "Auto-commit" permettant de démarrer et de valider automatiquement des transactions lors de l'utilisation des commande SIUD (SELECT, INSERT, UPDATE et DELETE) afin de préserver l'intégrité des données. Pour plus d'informations, reportez-vous à la section Implémentations du moteur SQL de 4D.

Les exemples suivants illustrent les différentes combinaisons de transactions.

Ni "John" ni "Smith" ne seront ajoutés dans la table emp :

   SQL LOGIN(SQL_INTERNAL ;"";"")  `Initaliser le moteur SQL de 4D SQL
   DEBUT TRANSACTION   `Démarrer une transaction dans le process courant
   Debut SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   Fin SQL
   SQL EXECUTER("START")   `Autre transaction dans le process courant
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("INSERT INTO emp (NAME) VALUES ('Smith')") `Cette instruction est exécutée dans le même process
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("ROLLBACK")  `Annuler la transaction interne du process
   ANNULER TRANSACTION `Annuler la transaction externe du process
   SQL LOGOUT

Seul "John" sera ajouté dans la table emp :

   SQL LOGIN(SQL_INTERNAL ;"";"")
   DEBUT TRANSACTION
   Debut SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   Fin SQL
   SQL EXECUTER("START")
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("INSERT INTO emp (NAME) VALUES ('Smith')")
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("ROLLBACK") `Annuler la transaction interne du process
   VALIDER TRANSACTION `Valider la transaction externe du process
   SQL LOGOUT

Ni "John" ni "Smith" ne seront ajoutés dans la table emp. La transaction externe annule la transaction interne :

   SQL LOGIN(SQL_INTERNAL ;"";"")
   DEBUT TRANSACTION
   Debut SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   Fin SQL
   SQL EXECUTER("START")
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("INSERT INTO emp (NAME) VALUES ('Smith')")
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("COMMIT")  `Valider la transaction interne du process
   ANNULER TRANSACTION  `Annuler la transaction externe du process
   SQL LOGOUT

"John" et "Smith" seront ajoutés dans la table emp :

   SQL LOGIN(SQL_INTERNAL ;"";"")
   DEBUT TRANSACTION
   Debut SQL
      INSERT INTO emp
      (NAME)
      VALUES ('John');
   Fin SQL
   SQL EXECUTER("START")
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("INSERT INTO emp (NAME) VALUES ('Smith')")
   SQL ANNULER CHARGEMENT
   SQL EXECUTER("COMMIT")  `Valider la transaction interne du process
   VALIDER TRANSACTION   `Valider la transaction externe du process
   SQL LOGOUT

4D - Documentation   Français   English   German   Japanese   Manuel de référence SQL 4D, Sommaire   Manuel de référence SQL 4D, Index   Retour   Précédent   Suivant