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
 START TRANSACTION `Démarrer une transaction dans le process courant
 Begin SQL
    INSERT INTO emp
    (NAME)
    VALUES ('John');
 End SQL
 SQL EXECUTE("START") `Autre transaction dans le process courant
 SQL CANCEL LOAD
 SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')") `Cette instruction est exécutée dans le même process
 SQL CANCEL LOAD
 SQL EXECUTE("ROLLBACK") `Annuler la transaction interne du process
 CANCEL TRANSACTION `Annuler la transaction externe du process
 SQL LOGOUT

Seul “John” sera ajouté dans la table emp :

 SQL LOGIN(SQL_INTERNAL;"";"")
 START TRANSACTION
 Begin SQL
    INSERT INTO emp
    (NAME)
    VALUES ('John');
 End SQL
 SQL EXECUTE("START")
 SQL CANCEL LOAD
 SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")
 SQL CANCEL LOAD
 SQL EXECUTE("ROLLBACK") `Annuler la transaction interne du process
 VALIDATE 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;"";"")
 START TRANSACTION
 Begin SQL
    INSERT INTO emp
    (NAME)
    VALUES ('John');
 End SQL
 SQL EXECUTE("START")
 SQL CANCEL LOAD
 SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")
 SQL CANCEL LOAD
 SQL EXECUTE("COMMIT") `Valider la transaction interne du process
 CANCEL TRANSACTION `Annuler la transaction externe du process
 SQL LOGOUT

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

 SQL LOGIN(SQL_INTERNAL;"";"")
 START TRANSACTION
 Begin SQL
    INSERT INTO emp
    (NAME)
    VALUES ('John');
 End SQL
 SQL EXECUTE("START")
 SQL CANCEL LOAD
 SQL EXECUTE("INSERT INTO emp (NAME) VALUES ('Smith')")
 SQL CANCEL LOAD
 SQL EXECUTE("COMMIT") `Valider la transaction interne du process
 VALIDATE TRANSACTION `Valider la transaction externe du process
 SQL LOGOUT

 
PROPRIÉTÉS 

Produit : 4D
Thème : Transactions

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

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