4D v16

Transactions

Accueil

 
4D v16
Transactions

Transactions  


 

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

 
PROPRIÉTÉS 

Produit : 4D
Thème : Transactions
Nom intl. : Transactions

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Référence SQL ( 4D v16)