English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Transactions SQLite

Une transaction est une unité de travail pour l'exécution de la base de données. Une transaction est un ensemble ou une séquence d'opérations achevées en ordre logique, qu'elles soient terminées manuellement par l'utilisateur ou automatiquement par un programme de base de données.

Une transaction est le processus de propagation de changements dans la base de données. Par exemple, si vous devez créer, mettre à jour ou supprimer des enregistrements dans une table, vous exécuterez une transaction sur cette table. Il est important de contrôler les transactions pour assurer l'intégrité des données et traiter les erreurs de base de données.

En réalité, vous composerez plusieurs requêtes SQLite en un groupe et les exécuterez ensemble comme partie d'une transaction.

Propriétés de la transaction

Une transaction possède les quatre propriétés standard suivantes, généralement représentées par l'acronyme ACID.

  • Atomicité (Atomicité) :Assurez-vous que toutes les opérations à l'intérieur de l'unité de travail sont terminées avec succès, sinon, la transaction sera interrompue lors d'une panne et les opérations précédentes seront annulées et ramenées à leur état précédent.

  • Consistance (Consistency) :Assurez-vous que la base de données change correctement d'état sur les transactions soumises avec succès.

  • Isolation (Isolation) :Faire que les opérations transactionnelles soient indépendantes et transparentes.

  • Persistance (Durabilité) :Assurez-vous que les résultats ou les effets des transactions soumises sont toujours présents en cas de défaillance du système.

Contrôle des transactions

Voici les commandes suivantes utilisées pour contrôler les transactions :

  • BEGIN TRANSACTION −Commencer une transaction.

  • COMMIT−Pour enregistrer les modifications, vous pouvez également utiliserEND TRANSACTIONcommande.

  • ROLLBACK −Retourner les modifications.

Les commandes de contrôle des transactions ne s'utilisent qu'avec les commandes DML INSERT, UPDATE et DELETE. Ils ne peuvent pas être utilisés lors de la création ou de la suppression de tables, car ces opérations sont automatiquement soumises dans la base de données.

Commande BEGIN TRANSACTION

Vous pouvez utiliser BEGIN TRANSACTION ou simplement BEGIN pour démarrer une transaction. Ce type de transaction se termine généralement par une commande COMMIT ou ROLLBACK suivante. Cependant, si la base de données est fermée ou qu'une erreur se produit, la transaction est également annulée. Voici la syntaxe simple pour démarrer une transaction.

BEGIN;
ou 
BEGIN TRANSACTION;

Commande COMMIT

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

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

Voici la syntaxe de la commande COMMIT.

COMMIT;
ou
END TRANSACTION;

Commande ROLLBACK

La commande ROLLBACK est une commande transactionnelle utilisée pour annuler les transactions non enregistrées dans la base de données.

Depuis la dernière commande COMMIT ou ROLLBACK, la commande ROLLBACK ne peut être utilisée que pour annuler les transactions.

Voici la syntaxe de la commande ROLLBACK.

ROLLBACK;

Exemple en ligne

la table COMPANY avec 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, commençons une transaction et supprimons les enregistrements à partir de age = 25supprimer les enregistrements de la table. Ensuite, utilisez la commande ROLLBACK pour annuler toutes les modifications.

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

Maintenant, si vous vérifiez la table COMPANY, elle conserve 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

commençons une autre transaction et supprimons les enregistrements à partir de AGE = 25supprimer les enregistrements de la table, puis nous utilisons la commande COMMIT pour soumettre toutes les modifications.

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

Si vous vérifiez maintenant que la table COMPANY a toujours 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