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.0Autres extensions