SQL - Transaktionen
Eine Transaktion ist eine Arbeitseinheit, die für eine Datenbank ausgeführt wird. Transaktionen sind Einheiten oder Abfolgen von Arbeiten, die in einer logischen Reihenfolge ausgeführt werden, entweder manuell von einem Benutzer oder automatisch von einer Art Datenbankprogramm.
Eine Transaktion ist die Weitergabe einer oder mehrerer Änderungen an der Datenbank. Wenn Sie beispielsweise einen Datensatz erstellen oder einen Datensatz aktualisieren oder einen Datensatz aus der Tabelle löschen, führen Sie eine Transaktion für diese Tabelle aus. Es ist wichtig, diese Transaktionen zu steuern, um die Datenintegrität sicherzustellen und Datenbankfehler zu behandeln.
In der Praxis werden Sie viele SQL-Abfragen zu einer Gruppe zusammenfassen und alle zusammen als Teil einer Transaktion ausführen.
Eigenschaften von Transaktionen
Transaktionen haben die folgenden vier Standardeigenschaften, die normalerweise mit dem Akronym bezeichnet werden ACID.
Atomicity- stellt sicher, dass alle Vorgänge innerhalb der Arbeitseinheit erfolgreich abgeschlossen werden. Andernfalls wird die Transaktion zum Zeitpunkt des Ausfalls abgebrochen und alle vorherigen Vorgänge werden auf ihren vorherigen Status zurückgesetzt.
Consistency - stellt sicher, dass die Datenbank bei einer erfolgreich festgeschriebenen Transaktion den Status ordnungsgemäß ändert.
Isolation - ermöglicht es Transaktionen, unabhängig und transparent voneinander zu arbeiten.
Durability - stellt sicher, dass das Ergebnis oder die Wirkung einer festgeschriebenen Transaktion bei einem Systemausfall bestehen bleibt.
Transaktionskontrolle
Die folgenden Befehle werden zur Steuerung von Transaktionen verwendet.
COMMIT - um die Änderungen zu speichern.
ROLLBACK - um die Änderungen zurückzusetzen.
SAVEPOINT - Erstellt Punkte innerhalb der Transaktionsgruppen, in denen ROLLBACK ausgeführt werden soll.
SET TRANSACTION - Platziert einen Namen in einer Transaktion.
Transaktionssteuerungsbefehle
Transaktionssteuerungsbefehle werden nur mit dem verwendet DML Commandswie - nur INSERT, UPDATE und DELETE. Sie können beim Erstellen oder Löschen von Tabellen nicht verwendet werden, da diese Vorgänge automatisch in der Datenbank festgeschrieben werden.
Der Befehl COMMIT
Der Befehl COMMIT ist der Transaktionsbefehl, mit dem Änderungen, die von einer Transaktion aufgerufen werden, in der Datenbank gespeichert werden.
Der Befehl COMMIT ist der Transaktionsbefehl, mit dem Änderungen, die von einer Transaktion aufgerufen werden, in der Datenbank gespeichert werden. Der Befehl COMMIT speichert alle Transaktionen seit dem letzten Befehl COMMIT oder ROLLBACK in der Datenbank.
Die Syntax für den Befehl COMMIT lautet wie folgt.
COMMIT;
Example
Betrachten Sie die Tabelle CUSTOMERS mit den folgenden Datensätzen:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Im Folgenden finden Sie ein Beispiel, mit dem Datensätze aus der Tabelle mit dem Alter = 25 gelöscht und anschließend die Änderungen in der Datenbank festgeschrieben werden.
SQL> DELETE FROM CUSTOMERS
WHERE AGE = 25;
SQL> COMMIT;
Somit würden zwei Zeilen aus der Tabelle gelöscht und die SELECT-Anweisung würde das folgende Ergebnis erzeugen.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Der ROLLBACK-Befehl
Der Befehl ROLLBACK ist der Transaktionsbefehl, mit dem Transaktionen rückgängig gemacht werden, die noch nicht in der Datenbank gespeichert wurden. Dieser Befehl kann nur zum Rückgängigmachen von Transaktionen verwendet werden, seit der letzte Befehl COMMIT oder ROLLBACK ausgegeben wurde.
Die Syntax für einen ROLLBACK-Befehl lautet wie folgt:
ROLLBACK;
Example
Betrachten Sie die Tabelle CUSTOMERS mit den folgenden Datensätzen:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Im Folgenden finden Sie ein Beispiel, mit dem die Datensätze aus der Tabelle mit dem Alter = 25 gelöscht und anschließend die Änderungen in der Datenbank rückgängig gemacht werden.
SQL> DELETE FROM CUSTOMERS
WHERE AGE = 25;
SQL> ROLLBACK;
Somit würde der Löschvorgang keine Auswirkungen auf die Tabelle haben und die SELECT-Anweisung würde das folgende Ergebnis erzeugen.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Der SAVEPOINT-Befehl
Ein SAVEPOINT 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.
Die Syntax für einen SAVEPOINT-Befehl lautet wie folgt.
SAVEPOINT SAVEPOINT_NAME;
Dieser Befehl dient nur zur Erstellung eines SAVEPOINT unter allen Transaktionsanweisungen. Der Befehl ROLLBACK wird verwendet, um eine Gruppe von Transaktionen rückgängig zu machen.
Die Syntax für das Zurücksetzen auf einen SAVEPOINT lautet wie folgt.
ROLLBACK TO SAVEPOINT_NAME;
Im Folgenden finden Sie ein Beispiel, in dem Sie die drei verschiedenen Datensätze aus der Tabelle CUSTOMERS löschen möchten. Sie möchten vor jedem Löschen einen SAVEPOINT erstellen, damit Sie jederzeit zu jedem SAVEPOINT zurückrollen können, um die entsprechenden Daten in den ursprünglichen Zustand zurückzusetzen.
Example
Betrachten Sie die Tabelle CUSTOMERS mit den folgenden Datensätzen.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Der folgende Codeblock enthält die Reihe von Operationen.
SQL> SAVEPOINT SP1;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
1 row deleted.
Nachdem die drei Löschungen stattgefunden haben, nehmen wir an, dass Sie Ihre Meinung geändert und beschlossen haben, zu dem von Ihnen als SP2 identifizierten SAVEPOINT zurückzukehren. Da SP2 nach dem ersten Löschen erstellt wurde, werden die letzten beiden Löschvorgänge rückgängig gemacht.
SQL> ROLLBACK TO SP2;
Rollback complete.
Beachten Sie, dass nur das erste Löschen stattgefunden hat, seit Sie auf SP2 zurückgesetzt haben.
SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
6 rows selected.
Der Befehl RELEASE SAVEPOINT
Mit dem Befehl RELEASE SAVEPOINT wird ein von Ihnen erstellter SAVEPOINT entfernt.
Die Syntax für einen Befehl RELEASE SAVEPOINT lautet wie folgt.
RELEASE SAVEPOINT SAVEPOINT_NAME;
Sobald ein SAVEPOINT freigegeben wurde, können Sie den Befehl ROLLBACK nicht mehr verwenden, um Transaktionen rückgängig zu machen, die seit dem letzten SAVEPOINT ausgeführt wurden.
Der Befehl SET TRANSACTION
Mit dem Befehl SET TRANSACTION kann eine Datenbanktransaktion initiiert werden. Mit diesem Befehl werden Merkmale für die folgende Transaktion angegeben. Beispielsweise können Sie eine Transaktion angeben, die schreibgeschützt oder schreibgeschützt sein soll.
Die Syntax für einen SET TRANSACTION-Befehl lautet wie folgt.
SET TRANSACTION [ READ WRITE | READ ONLY ];