HSQLDB - Transactions

UNE Transactionest un groupe séquentiel d'opérations de manipulation de base de données, qui est effectué et considéré comme une seule unité de travail. En d'autres termes, lorsque toutes les opérations sont exécutées avec succès, alors seulement la transaction entière sera terminée. Si une opération au sein de la transaction échoue, la transaction entière échouera.

Propriétés des transactions

Fondamentalement, la transaction prend en charge 4 propriétés standard. Ils peuvent être appelés propriétés ACID.

Atomicity - Toutes les opérations des transactions sont exécutées avec succès, sinon la transaction est abandonnée au point d'échec et les opérations précédentes sont restaurées à leur position précédente.

Consistency - La base de données change correctement d'état après une transaction validée avec succès.

Isolation - Il permet à la transaction de fonctionner de manière indépendante et transparente les unes par rapport aux autres.

Durability - Le résultat ou l'effet d'une transaction validée persiste en cas de défaillance du système.

Commit, Rollback et Savepoint

Ces mots clés sont principalement utilisés pour les transactions HSQLDB.

Commit- La transaction réussie doit toujours être terminée en exécutant la commande COMMIT.

Rollback - Si un échec se produit dans la transaction, la commande ROLLBACK doit être exécutée pour ramener chaque table référencée dans la transaction à son état précédent.

Savepoint - Crée un point dans le groupe de transactions dans lequel revenir en arrière.

Exemple

L'exemple suivant explique le concept des transactions avec la validation, la restauration et le point de sauvegarde. Considérons la table Clients avec les colonnes id, nom, âge, adresse et salaire.

Id Nom Âge Adresse Un salaire
1 Ramesh 32 Ahmedabad 2000,00
2 Karun 25 Delhi 1500,00
3 Kaushik 23 Kota 2000,00
4 Chaitanya 25 Bombay 6500,00
5 Harish 27 Bhopal 8500,00
6 Kamesh 22 MP 1500,00
sept Murali 24 Indore 10000,00

Utilisez les commandes suivantes pour créer la table client en suivant les lignes des données ci-dessus.

CREATE TABLE Customer (id INT NOT NULL, name VARCHAR(100) NOT NULL, age INT NOT
NULL, address VARCHAR(20), Salary INT, PRIMARY KEY (id));
Insert into Customer values (1, "Ramesh", 32, "Ahmedabad", 2000);
Insert into Customer values (2, "Karun", 25, "Delhi", 1500);
Insert into Customer values (3, "Kaushik", 23, "Kota", 2000);
Insert into Customer values (4, "Chaitanya", 25, "Mumbai", 6500);
Insert into Customer values (5, "Harish", 27, "Bhopal", 8500);
Insert into Customer values (6, "Kamesh", 22, "MP", 1500);
Insert into Customer values (7, "Murali", 24, "Indore", 10000);

Exemple pour COMMIT

La requête suivante supprime les lignes de la table ayant age = 25 et utilise la commande COMMIT pour appliquer ces modifications dans la base de données.

DELETE FROM CUSTOMERS WHERE AGE = 25;
COMMIT;

Après l'exécution de la requête ci-dessus, vous recevrez la sortie suivante.

2 rows effected

Après l'exécution réussie de la commande ci-dessus, vérifiez les enregistrements de la table client en exécutant la commande ci-dessous.

Select * from Customer;

Après l'exécution de la requête ci-dessus, vous recevrez la sortie suivante.

+----+----------+-----+-----------+----------+
| ID |   NAME   | AGE |   ADDRESS |  SALARY  |
+----+----------+-----+-----------+----------+
| 1  |  Ramesh  |  32 | Ahmedabad |   2000   |
| 3  |  kaushik |  23 |   Kota    |   2000   |
| 5  |  Harish  |  27 |   Bhopal  |   8500   |
| 6  |  Kamesh  |  22 |    MP     |   4500   |
| 7  |  Murali  |  24 |   Indore  |   10000  |
+----+----------+-----+-----------+----------+

Exemple de restauration

Considérons la même table Client comme entrée.

Id Nom Âge Adresse Un salaire
1 Ramesh 32 Ahmedabad 2000,00
2 Karun 25 Delhi 1500,00
3 Kaushik 23 Kota 2000,00
4 Chaitanya 25 Bombay 6500,00
5 Harish 27 Bhopal 8500,00
6 Kamesh 22 MP 1500,00
sept Murali 24 Indore 10000,00

Voici l'exemple de requête qui explique la fonctionnalité de restauration en supprimant les enregistrements de la table ayant age = 25, puis en ROLLBACK les modifications dans la base de données.

DELETE FROM CUSTOMERS WHERE AGE = 25;
ROLLBACK;

Après l'exécution réussie des deux requêtes ci-dessus, vous pouvez afficher les données d'enregistrement dans la table Client à l'aide de la commande suivante.

Select * from Customer;

Après l'exécution de la commande ci-dessus, vous recevrez la sortie suivante.

+----+----------+-----+-----------+----------+
| ID |   NAME   | AGE |   ADDRESS |  SALARY  |
+----+----------+-----+-----------+----------+
|  1 |  Ramesh  |  32 | Ahmedabad |   2000   |
|  2 |  Karun   |  25 |   Delhi   |   1500   |
|  3 |  Kaushik |  23 |   Kota    |   2000   |
|  4 | Chaitanya|  25 |   Mumbai  |   6500   |
|  5 |  Harish  |  27 |   Bhopal  |   8500   |
|  6 |  Kamesh  |  22 |     MP    |   4500   |
|  7 |  Murali  |  24 |    Indore |   10000  |
+----+----------+-----+-----------+----------+

La requête de suppression supprime les données d'enregistrement des clients dont l'âge = 25. La commande Rollback annule ces modifications sur la table Customer.

Exemple pour Savepoint

Savepoint est un point dans une transaction où vous pouvez restaurer la transaction à un certain point sans annuler la transaction entière.

Considérons la même table Client comme entrée.

Id Nom Âge Adresse Un salaire
1 Ramesh 32 Ahmedabad 2000,00
2 Karun 25 Delhi 1500,00
3 Kaushik 23 Kota 2000,00
4 Chaitanya 25 Bombay 6500,00
5 Harish 27 Bhopal 8500,00
6 Kamesh 22 MP 1500,00
sept Murali 24 Indore 10000,00

Prenons dans cet exemple, vous prévoyez de supprimer les trois enregistrements différents de la table Clients. Vous souhaitez créer un point de sauvegarde avant chaque suppression, afin de pouvoir revenir à n'importe quel point de sauvegarde à tout moment pour ramener les données appropriées à leur état d'origine.

Voici la suite des opérations.

SAVEPOINT SP1;
DELETE FROM CUSTOMERS WHERE ID = 1;
SAVEPOINT SP2;
DELETE FROM CUSTOMERS WHERE ID = 2;
SAVEPOINT SP3;
DELETE FROM CUSTOMERS WHERE ID = 3;

Maintenant, vous avez créé trois points de sauvegarde et supprimé trois enregistrements. Dans ce cas, si vous souhaitez restaurer les enregistrements ayant les Id 2 et 3, utilisez la commande Rollback suivante.

ROLLBACK TO SP2;

Notez que seule la première suppression a eu lieu depuis que vous êtes revenu au SP2. Utilisez la requête suivante pour afficher tous les enregistrements des clients.

Select * from Customer;

Après l'exécution de la requête ci-dessus, vous recevrez la sortie suivante.

+----+----------+-----+-----------+----------+
| ID |   NAME   | AGE |   ADDRESS |  SALARY  |
+----+----------+-----+-----------+----------+
|  2 |   Karun  |  25 |  Delhi    |   1500   |
|  3 |  Kaushik |  23 |  Kota     |   2000   |
|  4 | Chaitanya|  25 |  Mumbai   |   6500   |
|  5 |  Harish  |  27 |  Bhopal   |   8500   |
|  6 |  Kamesh  |  22 |  MP       |   4500   |
|  7 |  Murali  |  24 |  Indore   |  10000   |
+----+----------+-----+-----------+----------+

Libérer le point de sauvegarde

Nous pouvons libérer le point de sauvegarde à l'aide de la commande RELEASE. Voici la syntaxe générique.

RELEASE SAVEPOINT SAVEPOINT_NAME;