Transactions SQLite
La transaction est une unité de travail effectuée sur la base de données. Une transaction est une unité ou une séquence de travail effectuée dans une séquence logique. Elle peut être complétée manuellement par l'utilisateur ou automatiquement par un programme de base de données.
La transaction fait référence à une ou plusieurs extensions qui modifient la base de données. Par exemple, si vous créez un enregistrement, mettez à jour un enregistrement ou supprimez un enregistrement d'une table, 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 dans un groupe et les exécuter toutes ensemble dans le cadre d'une transaction.
Attributs des transactions
Les transactions ont les quatre attributs standards suivants, généralement ACID basés sur l'acronyme :
Atomicité) : Assurez-vous que toutes les opérations au sein de l'unité de travail se terminent avec succès, sinon la transaction sera terminée en cas d'échec et les opérations précédentes seront rétablies à l'état précédent.
Cohérence : Garantit que la base de données change d'état correctement lors des transactions validées avec succès.
Isolement : Rendre les opérations de transaction indépendantes et transparentes.
Durabilité : Garantit que les résultats ou les effets des transactions validées persistent en cas de panne du système.
Contrôle des transactions
Utilisez les commandes suivantes pour contrôler les transactions :
BEGIN TRANSACTION : Démarrer traitement des transactions.
COMMIT : enregistrez les modifications, ou vous pouvez utiliser la commande TERMINER LA TRANSACTION.
ROLLBACK : annulez les modifications.
Les commandes de contrôle des transactions ne sont utilisées 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 d'une table car ces opérations sont automatiquement validées dans la base de données.
Commande BEGIN TRANSACTION
La transaction peut être démarrée à l'aide de la commande BEGIN TRANSACTION ou d'une simple commande BEGIN. De telles transactions se poursuivent généralement jusqu'à ce que la prochaine commande COMMIT ou ROLLBACK soit rencontrée. Cependant, la transaction sera également annulée lorsque la base de données est fermée ou qu'une erreur se produit. Voici la syntaxe simple pour démarrer une transaction :
BEGIN; or BEGIN TRANSACTION;
Command COMMIT La commande
COMMIT est une commande de transaction utilisée pour enregistrer les modifications appelées par une transaction dans la base de données.
La commande COMMIT enregistre toutes les transactions depuis la dernière commande COMMIT ou ROLLBACK dans la base de données. 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 une transaction qui n'a pas été enregistrée dans le base de données.
La commande ROLLBACK ne peut être utilisée que pour annuler des transactions depuis que la dernière commande COMMIT ou ROLLBACK a été émise.
La syntaxe de la commande ROLLBACK est la suivante :
ROLLBACK;
Exemple
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, laissez-nous démarrer une transaction et commencer à partir de L'enregistrement avec age = 25 est supprimé de la table 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, il y a toujours 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 autre transaction et supprimons les enregistrements avec age = 25 de la table, et enfin nous utilisons le Commande COMMIT pour valider toutes les modifications.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> COMMIT;
Vérifiez la table COMPANY, il y a 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