logo

TRANSACTIONS SQL

Les transactions regroupent un ensemble de tâches en une seule unité d'exécution. Chaque transaction commence par une tâche spécifique et se termine lorsque toutes les tâches du groupe sont terminées avec succès. Si l'une des tâches échoue, la transaction échoue. Une transaction n’a donc que deux résultats : succès ou échec .

Exemple de transaction pour transférer 150 $ du compte A vers le compte B :

1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>

Les étapes incomplètes entraînent l’échec de la transaction. Une transaction de base de données, par définition, doit être atomique, cohérente, isolée et durable.
Ceux-ci sont communément connus sous le nom de ACIDE propriétés. Ces propriétés peuvent garantir l'exécution simultanée de plusieurs transactions sans conflit.



Propriétés de la transaction

  • Atomicité : Le résultat d’une transaction peut être soit un succès total, soit un échec total. L'ensemble de la transaction doit être annulé si une partie échoue.
  • Cohérence: Les transactions maintiennent les restrictions d'intégrité en déplaçant la base de données d'un état valide à un autre.
  • Isolement: Les transactions simultanées sont isolées les unes des autres, garantissant l'exactitude des données.
  • Durabilité: Une fois une transaction validée, ses modifications restent en vigueur même en cas de panne du système.

Comment implémenter la commande de contrôle des transactions à l’aide de SQL ?

Les commandes suivantes sont utilisées pour contrôler les transactions. Il est important de noter que ces instructions ne peuvent pas être utilisées lors de la création de tables et ne sont utilisées qu'avec les commandes DML telles que : INSÉRER , MISE À JOUR , et SUPPRIMER .

Commande COMMENCER LA TRANSACTION

Il indique le point de départ d'une transaction explicite ou locale.

Syntaxe:

BEGIN TRANSACTION nom_transaction ;

Commande DÉFINIR LA TRANSACTION

Les valeurs des propriétés de la transaction en cours, telles que le niveau d'isolation de la transaction et le mode d'accès, sont définies à l'aide de l'instruction SET TRANSACTION dans MySQL.

Syntaxe:

DÉFINIR LA TRANSACTION [ LIRE ÉCRIRE | LECTURE SEULEMENT ];

Commande COMMIT

Si tout est en ordre avec toutes les instructions au sein d'une seule transaction, toutes les modifications sont enregistrées ensemble dans la base de données et sont appelées engagé . La commande COMMIT enregistre toutes les transactions dans la base de données depuis la dernière commande COMMIT ou ROLLBACK.

parcours de précommande

Syntaxe:

COMMETTRE;

Exemple:

Exemple de tableau 1

sortir

sortir

Voici un exemple qui supprimerait les enregistrements de la table qui ont un âge = 20, puis validerait les modifications dans la base de données.

Requête

DELETE FROM Student WHERE AGE = 20; COMMIT;>

Sortir

Ainsi, deux lignes de la table seraient supprimées et l'instruction SELECT ressemblerait à :

bash divisé en chaîne
sortir

sortir

Commande ROLLBACK

Si une erreur se produit avec l'une des instructions groupées SQL, toutes les modifications doivent être abandonnées. Le processus d'annulation des changements est appelé retour en arriere . Cette commande ne peut être utilisée que pour annuler des transactions depuis l'émission de la dernière commande COMMIT ou ROLLBACK.

Syntaxe de la commande ROLLBACK :

RETOUR EN ARRIERE;

Exemple:

De l'exemple ci-dessus Exemple de tableau1 ,
Supprimez les enregistrements de la table qui ont age = 20, puis ROLLBACK les modifications dans la base de données.

Requête

DELETE FROM Student WHERE AGE = 20; ROLLBACK;>

Sortir

sortir

sortir

Commande POINT DE SAUVEGARDE

POINT DE SAUVEGARDE crée des points dans les groupes de transactions dans lesquels ROLLBACK.
Un SAVEPOINT est un point dans une transaction dans lequel vous pouvez restaurer la transaction jusqu'à un certain point sans annuler la totalité de la transaction.

Syntaxe de la commande Savepoint :

POINT DE SAVE SAVEPOINT_NAME ;

Cette commande est utilisée uniquement dans la création de SAVEPOINT parmi toutes les transactions.
En général, ROLLBACK est utilisé pour annuler un groupe de transactions.

Syntaxe pour revenir à la commande Savepoint :

RETOUR À SAVEPOINT_NAME ;

expression régulière en Java

vous pouvez ROLLBACK à n'importe quel SAVEPOINT à tout moment pour ramener les données appropriées à leur état d'origine.

Exemple:

De l'exemple ci-dessus Exemple de tableau1 , Supprimez les enregistrements de la table qui ont un âge = 20, puis ROLLBACK les modifications dans la base de données en conservant les points de sauvegarde.

Requête

SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>

Ici, SP1 est le premier SAVEPOINT créé avant la suppression. Dans cet exemple, une suppression a eu lieu.
Après la suppression, SAVEPOINT SP2 est à nouveau créé.

Sortir

sortir

sortir

La suppression a eu lieu, supposons que vous avez changé d'avis et décidé de ROLLBACK au SAVEPOINT que vous avez identifié comme SP1 qui est avant la suppression.
la suppression est annulée par cette instruction.

Requête

ROLLBACK TO SP1; //Rollback completed>

Sortir

sortir

sortir

Commande LIBÉRER LE POINT DE SAVE

Cette commande est utilisée pour supprimer un SAVEPOINT que vous avez créé.

Syntaxe:

LIBÉRER LE SAVEPOINT SAVEPOINT_NAME

Une fois un SAVEPOINT libéré, vous ne pouvez plus utiliser la commande ROLLBACK pour annuler les transactions effectuées depuis le dernier SAVEPOINT.
Il est utilisé pour lancer une transaction de base de données et pour spécifier les caractéristiques de la transaction qui suit.

Conclusion

  • Les instructions SQL sont regroupées à l'aide de transactions.
  • Ils promettent que soit tous les changements seront apportés, soit aucun changement.
  • La fiabilité est assurée par les qualités ACID d’atomicité, de cohérence, d’isolation et de durabilité.
  • Démarrez une transaction avec BEGIN TRANSACTION et terminez-la avec COMMIT ou ROLLBACK pour terminer ou annuler les modifications.