SQLite Transaction

Une transaction est une unité de travail effectuée sur une base de données. Une transaction est une unité ou une séquence de travail réalisée dans un ordre logique, qui peut être effectuée manuellement par un utilisateur ou automatiquement par un programme de base de données.

Une transaction désigne une extension qui modifie la base de données une ou plusieurs fois. Par exemple, si vous créez un enregistrement, mettez à jour un enregistrement ou supprimez un enregistrement d'une table, alors vous effectuez une transaction sur cette table. Il est important de contrôler les transactions pour garantir l'intégrité des données et gérer les erreurs de base de données.

En fait, vous pouvez combiner de nombreuses requêtes SQLite en un groupe et les exécuter toutes ensemble dans le cadre d'une transaction.

Propriétés des transactions

Les transactions possèdent les quatre propriétés standard suivantes, généralement abrégées en ACID :

  • Atomicité :Garantit que toutes les opérations au sein de l'unité de travail se terminent avec succès ; sinon, la transaction se termine en cas d'échec et les opérations précédentes sont annulées pour revenir à leur état antérieur.

  • Cohérence :Garantit que la base de données change correctement d'état lors d'une transaction validée avec succès.

  • Isolation :Rend les opérations de transaction indépendantes et transparentes les unes par rapport aux autres.

  • Durabilité :Garantit que les résultats ou les effets d'une transaction validée persistent même en cas de défaillance du système.

Contrôle des transactions

Utilisez les commandes suivantes pour contrôler les transactions :

  • BEGIN TRANSACTION: Démarrer le traitement des transactions.

  • COMMIT: Enregistrer les modifications, ou vous pouvez utiliser la commandeEND TRANSACTION.

  • ROLLBACK: Annuler les modifications effectuées.

Les commandes de contrôle de transaction sont uniquement utilisées avec les commandes DML INSERT, UPDATE et DELETE. Elles ne peuvent pas être utilisées lors de la création ou de la suppression de tables, car ces opérations sont automatiquement validées dans la base de données.

Commande BEGIN TRANSACTION

Une transaction peut être démarrée à l'aide de la commande BEGIN TRANSACTION ou simplement de la commande BEGIN. De telles transactions continuent généralement à s'exécuter jusqu'à ce que la prochaine commande COMMIT ou ROLLBACK soit rencontrée. Toutefois, lorsque la base de données est fermée ou qu'une erreur se produit, le traitement de la transaction sera également annulé. Voici la syntaxe simple pour démarrer une transaction :

BEGIN;

or 

BEGIN TRANSACTION;

Commande COMMIT

La commande COMMIT est une commande de transaction utilisée pour enregistrer dans la base de données les modifications invoquées par une transaction.

La commande COMMIT enregistre dans la base de données toutes les transactions depuis la dernière commande COMMIT ou ROLLBACK.

La syntaxe de la commande COMMIT est la suivante :

COMMIT;

or

END TRANSACTION;

Commande ROLLBACK

La commande ROLLBACK est une commande de transaction utilisée pour annuler les transactions qui n'ont pas encore été enregistrées dans la base de données.

La commande ROLLBACK ne peut être utilisée que pour annuler les transactions depuis que la dernière commande COMMIT ou ROLLBACK a été émise.

La syntaxe de la commande ROLLBACK est la suivante :

ROLLBACK;

Exemples

Supposons que la table COMPANY contienne les enregistrements suivants :

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Maintenant, démarrons une transaction et supprimons de la table les enregistrements avec age = 25. Enfin, nous utilisons la commande ROLLBACK pour annuler toutes les modifications.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

Vérifiez la table COMPANY, elle contient encore les enregistrements suivants :

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Maintenant, démarrons une autre transaction, supprimons de la table les enregistrements avec age = 25, et enfin nous utilisons la commande COMMIT pour valider toutes les modifications.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

Vérifiez la table COMPANY, elle contient les enregistrements suivants :

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0
Autres extensions