Rollback für Transaktionen durchführen
Durch Rollback einer Transaktion werden deren Änderungen rückgängig gemacht. Sie können ein Rollback der gesamten aktuellen Transaktion ausführen, oder Sie können das Rollback nur bis zu einem angegebenen Savepoint ausführen.
Um einen ROLLBACK der aktuellen Transaktion nur bis zu einem angegebenen SAVEPOINT durchzuführen, müssen Sie die Anweisung ROLLBACK mit der Klausel TO SAVEPOINT verwenden.
Um die gesamte aktuelle Transaktion zurückzusetzen, verwenden Sie entweder die ROLLBACK-Anweisung ohne die TO SAVEPOINT-Klausel oder (in der SQL Developer-Umgebung) das Symbol Änderungen zurücksetzen.
Wenn Sie die gesamte aktuelle Transaktion zurücksetzen, geschieht Folgendes:
-
Beendet die Transaktion
-
Macht alle Änderungen der Transaktion rückgängig
-
Löscht alle Savepoints der Transaktion
-
Gibt alle Transaktionssperren frei
Ein Rollback der aktuellen Transaktion nur bis zum angegebenen Savepoint führt folgende Aktionen aus:
-
Beendet die Transaktion nicht
-
Macht nur die Änderungen rückgängig, die nach dem angegebenen Savepoint erfolgt sind
-
Löscht nur die Savepoints, die nach dem angegebenen Savepoint festgelegt wurden (mit Ausnahme des angegebenen Savepoints selbst)
-
Gibt alle Tabellen- und Zeilensperren frei, die nach dem angegebenen Savepoint angefordert wurden
Andere Transaktionen, die einen Zugriff auf Zeilen angefordert haben, die nach dem angegebenen Savepoint gesperrt wurden, müssen warten, bis die Transaktion entweder festgeschrieben oder bis ein Rollback der Transaktion ausgeführt wurde. Andere Transaktionen, die die Zeilen nicht angefordert haben, können die Zeilen sofort anfordern und darauf zugreifen.
Um die Auswirkungen eines Rollbacks in SQL Developer anzuzeigen, müssen Sie möglicherweise auf das Symbol Aktualisieren klicken.
Als Ergebnis des Beispiels in Beispiel 3-7 verfügt das REGIONS über eine Region namens "Middle East and Afrika" und eine Region namens "Africa". Beispiel 3-8 korrigiert dieses Problem (eine sehr einfache Transaktion) und überprüft die Änderung, führt dann jedoch ein Rollback der Transaktion aus und überprüft das Rollback.
Beispiel 3-8: Rollback einer gesamten Transaktion ausführen
Vor der Transaktion:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Ergebnis:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Transaktion (Tabelle ändern):
UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';
Ergebnis:
1 row updated.
Änderung überprüfen:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Ergebnis:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East
5 Africa
5 rows selected.
Rollback der Transaktion ausführen:
ROLLBACK;
Ergebnis:
Rollback complete.
Rollback überprüfen:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Ergebnis:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Siehe auch: Oracle Database SQL Language Reference für Informationen zur ROLLBACK-Anweisung