Info zu Transaktionssteuerungs-Anweisungen
Eine Transaktion ist eine Folge von SQL-Anweisungen, die von Oracle Database als Einheit behandelt werden: Entweder werden alle Anweisungen ausgeführt oder gar keine. Transaktionen dienen dazu, Geschäftsvorgänge zu modellieren, die erfordern, dass mehrere Vorgänge als Einheit vorgenommen werden.
Beispiel: Wenn ein Manager das Geschäft verlässt, muss eine Zeile in die Tabelle JOB_HISTORY eingefügt werden, um anzugeben , wann der Manager das Geschäft verlassen hat. Für jeden Mitarbeiter, der diesem Manager unterstellt ist, muss der Wert MANAGER_ID in der Tabelle EMPLOYEES aktualisiert werden. Um diesen Prozess in einer Anwendung zu modellieren, müssen Sie die Anweisungen INSERT und UPDATE zu einer einzelnen Transaktion gruppieren.
Die grundlegenden Anweisungen zur Transaktionskontrolle sind SAVEPOINT, COMMIT und ROLLBACK:
-
SAVEPOINT markiert einen SAVEPOINT in einer Transaktion – ein Punkt, zu dem später eine Rollback durchgeführt werden kann. Savepoints sind optional, und eine Transaktion kann mehrere Savepoints haben.
-
COMMIT beendet die aktuelle Transaktion, macht ihre Änderungen permanent, löscht ihre Savepoints und löst ihre Sperren auf.
-
ROLLBACK führt entweder ein ROLLBACK durch (hebt) entweder die gesamte aktuelle Transaktion oder nur die Änderungen durch, die nach dem angegebenen Savepoint erfolgen.
In der SQL*Plus-Umgebung können Sie eine Transaktionssteueranweisung nach der Aufforderung SQL> eingeben.
In der SQL Developer-Umgebung können Sie eine Transaktionskontrollanweisung in das Arbeitsblatt eingeben. SQL Developer verfügt auch über die Symbole "Änderungen festschreiben" und "Änderungen zurücksetzen", die unter "Transaktionen festschreiben" und "Transaktionen zurücksetzen" erläutert werden.
Achtung:
Wenn Sie eine Transaktion nicht ausdrücklich festschreiben, das Programm aber anormal beendet wird, erfolgt automatisch ein Rollback der letzten nicht festgeschriebenen Transaktion in der Datenbank.
Aufgrund dieses Verhaltens werden Transaktionen in Anwendungsprogrammen explizit beendet, indem sie entweder festgeschrieben oder zurückgerollt werden.
Siehe:
-
Oracle Database Concepts für weitere Informationen zur Transaktionsverwaltung
-
Oracle Database SQL Language Reference für weitere Informationen zu Transaktionskontrollanweisungen