ROLLBACK WORK beendet eine SQL-Transaktion und setzt Änderungen zurück, die seit dem Ende der letzten SQL-Transaktion durchgeführt wurden. Einige Anweisungen, wie zum Beispiel SET SCHEMA, werden auch zurückgesetzt, wenn sie vor Beginn der aktuellen Transaktion aber nach Ende der letzten Transaktion ausgeführt wurden.
ROLLBACK WORK setzt folgende Änderungen zurück:
geänderte Daten in SQL-Schemata
mit STORE abgespeicherte Cursorpositionen
mit SET CATALOG und SET SCHEMA gesetzte Datenbank- und Schemanamen
mit SET SESSION AUTHORIZATION festgelegte Berechtigungsschlüssel
Zuteilung (ALLOCATE) und Freigabe (DEALLOCATE) von SQL-Deskriptorbereichen
gesetzte Werte in SQL-Deskriptorbereichen
Alle innerhalb der Transaktion geöffneten oder mit FETCH positionierten Cursor werden geschlossen. Dynamisch formulierte Anweisungen und Cursorbeschreibungen, die mit PREPARE vorbereitet wurden, gehen verloren.
Die Anweisung SET TRANSACTION sowie Utility-Anweisungen können nicht zurückgesetzt werden.
Mit der ersten fehlerfreien transaktionseinleitenden SQL-Anweisung nach ROLLBACK WORK beginnt eine neue SQL-Transaktion (siehe Abschnitt „COMMIT WORK - Transaktion beenden").
ROLLBACK [WORK]
Implizite Ausführung von ROLLBACK WORK
SESAM/SQL setzt eine SQL-Transaktion durch implizite Ausführung eines ROLLBACK WORK zurück, wenn eine der folgenden Situationen eintritt:
Innerhalb der aktuellen Transaktion tritt ein nicht behebbarer Fehler auf.
Für zwei oder mehrere Transaktionen, die gleichzeitig auf bestimmte SQL-Daten zugreifen, kann der eingestellte Isolationslevel nicht anders gewährleistet werden (siehe auch „ Basishandbuch“).
Eine Transaktion ist für lange Zeit unterbrochen und belegt Betriebsmittel, die von anderen Transaktionen benötigt werden (siehe auch „ Basishandbuch“).
Die Wirkung ist dieselbe wie beim expliziten Aufruf von ROLLBACK.
Transaktionen unter openUTM
Die Anweisung ROLLBACK WORK ist nicht zulässig, wenn Sie mit openUTM arbeiten. In diesem Fall wird die Transaktionssteuerung komplett mit UTM-Sprachmitteln durchgeführt. Wird eine UTM-Transaktion zurückgesetzt, dann wird auch die SQL-Transaktion zurückgesetzt..
CALL-DML-Transaktionen
Innerhalb einer CALL-DML-Transaktion ist die SQL-Anweisung ROLLBACK WORK nicht erlaubt (siehe Abschnitt „SQL-Anweisungen in CALL-DML-Transaktionen").
Siehe auch
COMMIT