pl sql transactions commit
Erfahren Sie mehr über die PL SQL-Transaktionen anhand von Beispielen für COMMIT-, ROLLBACK- und SAVEPOINTS-Anweisungen:
In diesem Artikel werden wir fortfahren PL / SQL-Serie . In dem PL SQL-Paket Im Tutorial haben wir etwas über das Paket, seine Vorteile, Spezifikationen und Struktur gelernt.
Hier werden wir PL SQL-Transaktionen und ihre Eigenschaften untersuchen. Wir werden einige PL / SQL-Anweisungen wie COMMIT, ROLLBACK, SAVEPOINTS usw. diskutieren, die sich auf PL SQL-Transaktionen beziehen.
Wir werden auch die Anweisungen LOCK TABLe und AUTOCOMMIT in PL SQL kennenlernen.
Beginnen wir mit der Diskussion !!
Was du lernen wirst:
- PL SQL-Transaktionen
- Starten Sie die Transaktionsverarbeitung
- Transaktionsverarbeitung beenden
- COMMIT für dauerhafte Änderungen
- ROLLBACK Zum Rückgängigmachen von Änderungen
- SAVEPOINT Zum Zurücksetzen von Teiländerungen
- LOCK-Tabelle In PL / SQL
- Automatische Transaktionssteuerung in PL / SQL
- Häufig gestellte Fragen und Antworten
- Fazit
PL SQL-Transaktionen
Eine atomare Komponente der Arbeit in einer Datenbank mit mehreren SQL-Anweisungen wird als Transaktion bezeichnet. Es wird als atomar bezeichnet, da Änderungen, die von SQL-Anweisungen betroffen sind, entweder festgeschrieben werden können (unbestimmte Aktualisierungen der Datenbank) oder zurückgesetzt werden (Aktualisierungen der Datenbank rückgängig machen).
antivirus mit VPN
Eine SQL-Anweisung muss festgeschrieben werden, da sie sonst zurückgesetzt werden kann und alle Änderungen, die die SQL-Anweisung vornehmen sollte, rückgängig gemacht werden. Wenn das PL / SQL-Programm während der Transaktion angehalten wird, hat dies keine Auswirkungen auf die Datenbank und es wird in den ursprünglichen Zustand zurückversetzt.
COMMIT und ROLLBACK sorgen dafür, dass die Änderungen an der Datenbank entweder ewig dauern oder rückgängig gemacht werden. Die Anweisung SAVEPOINT zeigt auf die aktuelle Position in der Transaktionsverarbeitung.
Starten Sie die Transaktionsverarbeitung
Jede Transaktion hat einen Start und eine Beendigung.
Die folgenden Vorfälle markieren einen Transaktionsbeginn:
- Nach der Verbindung zur Datenbank wird die erste SQL-Anweisung ausgeführt.
- Eine neue SQL-Anweisung wird ausgeführt, nachdem die vorherige SQL-Anweisung abgeschlossen wurde.
Transaktionsverarbeitung beenden
Jedes PL / SQL-Programm sollte eine COMMIT- oder ROLLBACK-Anweisung haben. Es hängt ausschließlich von der Programmierlogik ab, ob wir nach der Transaktion ein COMMIT oder ein ROLLBACK verwenden sollen.
Wenn keine COMMIT- oder ROLLBACK-Anweisungen verwendet werden, hängt es von der Hostumgebung ab, wie der endgültige Status der Datenbank aussehen soll. Zum Beispiel, Wenn in einer SQL * PLUS-Umgebung ein PL / SQL-Codeblock keine COMMIT- oder ROLLBACK-Anweisung enthält, hängt der Status der Datenbank von dem Codeblock ab, der unmittelbar danach ausgeführt wird.
Wenn wir in einer Oracle-Umgebung eine COMMIT-Anweisung einfügen oder den Befehl DISCONNECT, EXIT oder QUIT ausführen, nachdem eine Datendefinitions- oder Datensteuerungsabfrage ausgeführt wurde, wird die Transaktion festgeschrieben. Wenn wir eine ROLLBACK-Anweisung einfügen, wird die Transaktion rückgängig gemacht.
Somit kann eine Transaktion aufgrund der folgenden Szenarien beendet werden:
- Eine ROLLBACK- oder COMMIT-Anweisung wird ausgeführt.
- Eine DDL-Abfrage ( zum Beispiel, Eine Tabellenerstellungsanweisung) wird ausgeführt, woraufhin COMMIT standardmäßig ausgeführt wird.
- Eine DCL-Abfrage ( zum Beispiel, Eine GRANT-Anweisung) wird ausgeführt, woraufhin COMMIT standardmäßig ausgeführt wird.
- Benutzer beendet die Datenbankverbindung.
- Der Benutzer führt die EXIT-Anweisung aus, um aus SQL * PLUS herauszukommen. Anschließend wird COMMIT standardmäßig ausgeführt.
- SQL * PLUS stößt auf eine ungewöhnliche Beendigung, nach der ROLLBACK standardmäßig ausgeführt wird.
- Eine DML-Abfrage wird nicht erfolgreich ausgeführt. Anschließend wird ROLLBACK standardmäßig ausgeführt, um die Datenbank wieder in ihren ursprünglichen Zustand zu versetzen.
COMMIT für dauerhafte Änderungen
Die COMMIT-Anweisung kann die aktuelle Transaktion beenden und eine permanente Änderung vornehmen, wie sie von der Transaktion ausgeführt wird. Sobald COMMIT ausgeführt wurde, können wir die geänderten Daten abrufen.
Während die COMMIT-Anweisung ausgeführt wird, werden alle betroffenen Zeilen der Tabelle aus Sperren freigegeben. Es hilft uns auch, den SAVEPOINT loszuwerden. Eine COMMIT-Anweisung kann optional von der WORK-Anweisung (COMMIT WORK) begleitet werden, die nur hinzugefügt wird, um die Lesbarkeit des Codes zu verbessern.
Falls eine Transaktion zum Zeitpunkt von COMMIT fehlschlägt und der Status der Transaktion nicht bekannt ist, wird zu diesem Zeitpunkt der COMMENT-Text im PL / SQL-Code zusammen mit der ID der Transaktion in einem Datenwörterbuch gespeichert.
Syntax für die Transaktion COMMIT:
COMMIT;
Betrachten wir eine Tabelle mit dem Namen LEHRER.
Wir haben die TEACHERS-Tabelle mit Hilfe der folgenden SQL-Anweisung erstellt:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
Fügen Sie Werte in diese Tabelle ein und schreiben Sie die Transaktion folgendermaßen fest:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Als nächstes wird die folgende Abfrage ausgeführt:
SELECT * FROM TEACHERS;
Ausgabe:
ROLLBACK Zum Rückgängigmachen von Änderungen
Wenn eine aktuelle Transaktion mit einer ROLLBACK-Anweisung beendet wird, werden alle Änderungen rückgängig gemacht, die in der Transaktion stattfinden sollen.
Eine ROLLBACK-Anweisung weist die folgenden Funktionen auf:
- Die Datenbank wird mit einer ROLLBACK-Anweisung in ihrem ursprünglichen Zustand wiederhergestellt, falls wir versehentlich eine wichtige Zeile aus der Tabelle gelöscht haben.
- Im Falle einer Ausnahme, die zum Ausführungsfehler einer SQL-Anweisung geführt hat, können wir mit einer ROLLBACK-Anweisung zum Startpunkt des Programms springen, von wo aus wir Abhilfemaßnahmen ergreifen können.
- Die ohne COMMIT-Anweisung an der Datenbank vorgenommenen Aktualisierungen können mit einer ROLLBACK-Anweisung widerrufen werden.
Syntax für die Transaktion ROLLBACK:
ROLLBACK;
Syntax für die Transaktion ROLLBACK mit SAVEPOINT:
ROLLBACK (TO SAVEPOINT );
Hier das save_n ist der Name des SAVEPOINT.
Betrachten wir die TEACHERS-Tabelle, die wir zuvor erstellt haben.
Code-Implementierung mit ROLLBACK:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Als nächstes wird die folgende Abfrage ausgeführt:
SELECT * FROM TEACHERS;
Die Ausgabe des obigen Codes sollte sein:
Im obigen Code haben wir eine DELETE-Anweisung ausgeführt, die den Datensatz des Lehrers mit CODE gleich 3 löschen soll. Aufgrund der ROLLBACK-Anweisung gibt es jedoch keine Auswirkungen auf die Datenbank, und das Löschen erfolgt nicht.
SAVEPOINT Zum Zurücksetzen von Teiländerungen
SAVEPOINT gibt dem aktuellen Transaktionsverarbeitungspunkt einen Namen und eine Identifikation. Es ist im Allgemeinen mit einer ROLLBACK-Anweisung verbunden. Es ermöglicht uns, einige Abschnitte einer Transaktion zurückzusetzen, indem wir nicht die gesamte Transaktion berühren.
Wenn wir ROLLBACK auf einen SAVEPOINT anwenden, werden alle SAVEPOINTS entfernt, die nach diesem bestimmten SAVEPOINT enthalten sind. (Wenn wir also drei SAVEPOINTS markiert und einen ROLLBACK auf den zweiten SAVEPOINT angewendet haben, wird automatisch der dritte SAVEPOINT gelöscht.)
Eine COMMIT- oder eine ROLLBACK-Anweisung löscht alle SAVEPOINTS. Die SAVEPOINT-Namen sind nicht deklarierte Bezeichner und können innerhalb einer Transaktion mehrmals angewendet werden. Innerhalb der Transaktion bewegt sich SAVEPOINT von der alten zur aktuellen Position.
Ein auf einen SAVEPOINT angewendetes ROLLBACK wirkt sich nur auf den laufenden Teil der Transaktion aus. Ein SAVEPOINT hilft somit, eine lange Transaktion in kleine Abschnitte aufzuteilen, indem Validierungspunkte positioniert werden.
Syntax für die Transaktion SAVEPOINT:
SAVEPOINT ;
Hier, save_n ist der Name des SAVEPOINT.
Betrachten wir noch einmal die TEACHERS-Tabelle, die wir zuvor erstellt haben.
Code-Implementierung von ROLLBACK WITH SAVEPOINT:
INSERT INTO TEACHERS VALUES (4, 'CYPRESS', 'MICHEAL'); SAVEPOINT s; INSERT INTO TEACHERS VALUES (5, 'PYTHON', 'STEVE'); INSERT INTO TEACHERS VALUES (6, 'PYTEST', 'ARNOLD'); ROLLBACK TO s; INSERT INTO TEACHERS VALUES (7, 'PROTRACTOR', 'FANNY'); COMMIT;
Als nächstes wird die folgende Abfrage ausgeführt:
SELECT * FROM TEACHERS;
Die Ausgabe des obigen Codes sollte sein:
Im obigen Code nach ROLLBACK mit SAVEPOINT s angewendet wird, wurden nur zwei weitere Zeilen eingefügt, d. h. Lehrer mit CODE 4 bzw. 7. Bitte beachten Sie, dass bei der Tabellenerstellung Lehrer mit den Codes 1, 2 und 3 hinzugefügt wurden.
LOCK-Tabelle In PL / SQL
Die LOCK-Anweisung in PL / SQL ermöglicht das Sperren der gesamten Datenbank in einem Sperrmodus. Dies bestimmt, ob wir den Zugriff auf die Tabelle freigeben oder nicht zulassen möchten.
Nehmen wir ein Beispiel für eine Sperrtabelle:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Die obige Abfrage sperrt die TEACHERS-Tabelle im Zeilenfreigabemodus. Ein Zeilenfreigabemodus ermöglicht die gleichzeitige Verwendung einer Tabelle. Benutzer können die vollständige Tabelle nicht für den individuellen Gebrauch sperren. Nach der Ausführung eines COMMIT oder ROLLBACK werden die Tabellensperren freigegeben. Das Schlüsselwort NOWAIT wird verwendet, um zu erwähnen, dass die Datenbank nicht auf die Freigabe einer Sperre warten darf.
Der Sperrmodus ist wichtig, um zu schließen, welche anderen Sperren auf eine Tabelle angewendet werden können.
Welchen E-Mail-Dienst soll ich verwenden?
Lassen Sie uns einige in PL / SQL verfügbare LOCK-Modi diskutieren:
Sl. Nein | VERRIEGELTER ZUSTAND | ZWECK |
---|---|---|
1 | ROW SHARE | Es ermöglicht mehreren Benutzern, die Tabelle gleichzeitig zu verwenden. Die Benutzer dürfen jedoch nicht die gesamte Tabelle für die ausschließliche Verwendung sperren. |
zwei | REIHE EXKLUSIV | Es ermöglicht mehreren Benutzern, die Tabelle gleichzeitig zu verwenden. Die Benutzer dürfen jedoch nicht die gesamte Tabelle für die ausschließliche Verwendung im Freigabemodus sperren. |
3 | UPDATE TEILEN | Es ermöglicht mehreren Benutzern, die Tabelle gleichzeitig zu verwenden. Die Benutzer dürfen jedoch nicht die gesamte Tabelle für die ausschließliche Verwendung sperren. |
4 | AKTIE | Es ermöglicht uns, mehrere Abfragen gleichzeitig für die Tabelle auszuführen. Die Benutzer dürfen die gesperrte Tabelle jedoch nicht ändern. |
5 | TEILEN SIE REIHE EXKLUSIV | Es ermöglicht den Benutzern mit schreibgeschütztem Zugriff auf die Tabelle. Sie dürfen die Tabelle nicht ändern oder im Freigabemodus sperren. |
6 | EXKLUSIV | Es können nur Abfragen für die gesperrte Tabelle ausgeführt werden. |
Automatische Transaktionssteuerung in PL / SQL
Wir können die Konfiguration so vornehmen, dass eine COMMIT-Anweisung standardmäßig ausgeführt wird, wenn eine INSERT- oder DELETE-Anweisung ausgeführt wird. Dies erfolgt, indem die Umgebungsvariable AUTOCOMMIT auf ON gesetzt wird.
Syntax:
SET AUTOCOMMIT ON;
Dies kann wiederum deaktiviert werden, indem die Umgebungsvariable AUTOCOMMIT auf OFF gesetzt wird.
Syntax:
SET AUTOCOMMIT OFF;
Häufig gestellte Fragen und Antworten
F # 1) Was ist die Transaktion in PL SQL?
Antworten: Eine Transaktion ist eine Gruppe von SQL-Datenberechnungsanweisungen, die als atomare Einheit arbeiten. Alle Transaktionen sind atomarer Natur und werden entweder festgeschrieben oder rückgängig gemacht.
F # 2) Was ist COMMIT in PL SQL?
Antworten: Eine COMMIT-Anweisung wird verwendet, um durch die vorliegende Transaktion eine dauerhafte Änderung an der Datenbank vorzunehmen. Dadurch wird die Änderung an der Datenbank für Benutzer sichtbar.
F # 3) Wie beenden Sie eine Transaktion?
Antworten: Eine Transaktion wird explizit mit einer COMMIT- oder ROLLBACK-Anweisung beendet. Sie kann auch bedingungslos beendet werden, nachdem eine DML-Anweisung ausgeführt wurde.
F # 4) Können wir einen Auslöser festlegen?
Antworten: Ja, wir können einen Trigger nur festschreiben, wenn diese Triggertransaktion von der übergeordneten Transaktion unabhängig ist.
F # 5) Ist SELECT eine Transaktion?
Antworten: Ja, SELECT ist eine Transaktion mit allen Merkmalen einer Transaktion.
F # 6) Wie kann ich eine Transaktion in Oracle rückgängig machen?
Antworten: Wir müssen eine ROLLBACK-Anweisung ausführen, um eine Transaktion in Oracle zurückzusetzen. Es macht alle durch die Transaktion an der Datenbank vorgenommenen Änderungen rückgängig und stellt den ursprünglichen Zustand wieder her.
Fazit
In diesem Lernprogramm haben wir einige grundlegende Konzepte von PL SQL-Transaktionen ausführlich erläutert, die für die Verwaltung von PL SQL-Transaktionen unerlässlich sind. Wir haben die folgenden Themen behandelt:
- Transaktion.
- Verwendung von COMMIT in einer Transaktion.
- Was ist ein ROLLBACK in einer Transaktion?
- Verwendung von ROLLBACK mit SAVEPOINT in einer Transaktion.
- LOCK Tisch.
Literatur-Empfehlungen
- PL SQL Tutorial für Anfänger mit Beispielen | Was ist PL / SQL?
- Entwicklung von Oracle-Datenbankanwendungen: Oracle SQL & PL / SQL
- PL SQL-Paket: Oracle PL / SQL-Paket-Tutorial mit Beispielen
- Unterschied zwischen SQL und MySQL und SQL Server (mit Beispielen)
- PL SQL Datetime Format: Datums- und Zeitfunktionen in PL / SQL
- Vollständige Anleitung zur Behandlung von PL SQL-Ausnahmen mit Beispielen
- SQL vs NoSQL Genaue Unterschiede und wissen, wann NoSQL und SQL verwendet werden müssen
- Oracle Database Tutorial - Was ist Oracle Database?