HSQLDB - Transaktionen

EIN Transactionist eine sequentielle Gruppe von Datenbankmanipulationsvorgängen, die ausgeführt und als eine einzige Arbeitseinheit betrachtet werden. Mit anderen Worten, wenn alle Vorgänge erfolgreich ausgeführt wurden, ist nur dann die gesamte Transaktion abgeschlossen. Wenn eine Operation innerhalb der Transaktion fehlschlägt, schlägt die gesamte Transaktion fehl.

Eigenschaften von Transaktionen

Grundsätzlich unterstützt die Transaktion 4 Standardeigenschaften. Sie können als ACID-Eigenschaften bezeichnet werden.

Atomicity - Alle Vorgänge in den Transaktionen werden erfolgreich ausgeführt, andernfalls wird die Transaktion zum Zeitpunkt des Ausfalls abgebrochen und die vorherigen Vorgänge werden auf ihre vorherige Position zurückgesetzt.

Consistency - Die Datenbank ändert den Status bei einer erfolgreich festgeschriebenen Transaktion ordnungsgemäß.

Isolation - Es ermöglicht der Transaktion, unabhängig voneinander und transparent für einander zu arbeiten.

Durability - Das Ergebnis oder die Wirkung einer festgeschriebenen Transaktion bleibt bei einem Systemausfall bestehen.

Commit, Rollback und Savepoint

Diese Schlüsselwörter werden hauptsächlich für HSQLDB-Transaktionen verwendet.

Commit- Die erfolgreiche Transaktion sollte immer durch Ausführen des Befehls COMMIT abgeschlossen werden.

Rollback - Wenn in der Transaktion ein Fehler auftritt, sollte der Befehl ROLLBACK ausgeführt werden, um jede Tabelle, auf die in der Transaktion verwiesen wird, auf ihren vorherigen Status zurückzusetzen.

Savepoint - Erstellt einen Punkt innerhalb der Gruppe von Transaktionen, in dem ein Rollback durchgeführt werden soll.

Beispiel

Im folgenden Beispiel wird das Transaktionskonzept zusammen mit Commit, Rollback und Savepoint erläutert. Betrachten wir die Tabelle Kunden mit den Spalten ID, Name, Alter, Adresse und Gehalt.

Ich würde Name Alter Adresse Gehalt
1 Ramesh 32 Ahmedabad 2000.00
2 Karun 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitanya 25 Mumbai 6500.00
5 Harish 27 Bhopal 8500.00
6 Kamesh 22 MP 1500.00
7 Murali 24 Indore 10000.00

Verwenden Sie die folgenden Befehle, um die Kundentabelle gemäß den obigen Daten zu erstellen.

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);

Beispiel für COMMIT

Die folgende Abfrage löscht Zeilen aus der Tabelle mit dem Alter = 25 und verwendet den Befehl COMMIT, um diese Änderungen in der Datenbank anzuwenden.

DELETE FROM CUSTOMERS WHERE AGE = 25;
COMMIT;

Nach Ausführung der obigen Abfrage erhalten Sie die folgende Ausgabe.

2 rows effected

Überprüfen Sie nach erfolgreicher Ausführung des obigen Befehls die Datensätze der Kundentabelle, indem Sie den unten angegebenen Befehl ausführen.

Select * from Customer;

Nach Ausführung der obigen Abfrage erhalten Sie die folgende Ausgabe.

+----+----------+-----+-----------+----------+
| 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  |
+----+----------+-----+-----------+----------+

Beispiel für Rollback

Betrachten wir dieselbe Kundentabelle als Eingabe.

Ich würde Name Alter Adresse Gehalt
1 Ramesh 32 Ahmedabad 2000.00
2 Karun 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitanya 25 Mumbai 6500.00
5 Harish 27 Bhopal 8500.00
6 Kamesh 22 MP 1500.00
7 Murali 24 Indore 10000.00

In der folgenden Beispielabfrage wird die Rollback-Funktionalität erläutert, indem Datensätze aus der Tabelle mit dem Alter = 25 gelöscht und anschließend die Änderungen in der Datenbank rückgängig gemacht werden.

DELETE FROM CUSTOMERS WHERE AGE = 25;
ROLLBACK;

Nach erfolgreicher Ausführung der beiden oben genannten Abfragen können Sie die Datensatzdaten in der Kundentabelle mit dem folgenden Befehl anzeigen.

Select * from Customer;

Nach Ausführung des obigen Befehls erhalten Sie die folgende Ausgabe.

+----+----------+-----+-----------+----------+
| 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  |
+----+----------+-----+-----------+----------+

Die Löschabfrage löscht die Datensatzdaten von Kunden mit einem Alter von 25 Jahren. Mit dem Befehl Rollback werden diese Änderungen in der Kundentabelle zurückgesetzt.

Beispiel für Savepoint

Sicherungspunkt ist ein Punkt in einer Transaktion, an dem Sie die Transaktion auf einen bestimmten Punkt zurücksetzen können, ohne die gesamte Transaktion zurückzusetzen.

Betrachten wir dieselbe Kundentabelle als Eingabe.

Ich würde Name Alter Adresse Gehalt
1 Ramesh 32 Ahmedabad 2000.00
2 Karun 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitanya 25 Mumbai 6500.00
5 Harish 27 Bhopal 8500.00
6 Kamesh 22 MP 1500.00
7 Murali 24 Indore 10000.00

In diesem Beispiel möchten Sie die drei verschiedenen Datensätze aus der Tabelle "Kunden" löschen. Sie möchten vor jedem Löschen einen Sicherungspunkt erstellen, damit Sie jederzeit zu einem beliebigen Sicherungspunkt zurückkehren können, um die entsprechenden Daten in den ursprünglichen Zustand zurückzusetzen.

Hier ist die Reihe von Operationen.

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

Jetzt haben Sie drei Sicherungspunkte erstellt und drei Datensätze gelöscht. Wenn Sie in dieser Situation die Datensätze mit den IDs 2 und 3 zurücksetzen möchten, verwenden Sie den folgenden Rollback-Befehl.

ROLLBACK TO SP2;

Beachten Sie, dass nur das erste Löschen stattgefunden hat, seit Sie auf SP2 zurückgesetzt haben. Verwenden Sie die folgende Abfrage, um alle Datensätze der Kunden anzuzeigen.

Select * from Customer;

Nach Ausführung der obigen Abfrage erhalten Sie die folgende Ausgabe.

+----+----------+-----+-----------+----------+
| 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   |
+----+----------+-----+-----------+----------+

Geben Sie Savepoint frei

Wir können den Savepoint mit dem Befehl RELEASE freigeben. Es folgt die generische Syntax.

RELEASE SAVEPOINT SAVEPOINT_NAME;