Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

COMMIT WORK - Transaktion beenden

COMMIT WORK beendet eine SQL-Transaktion und schreibt die während der Transaktion durchgeführten Änderungen in der Datenbank fest. Die geänderten Daten stehen damit allen anderen Transaktionen zur Verfügung.

Mit der ersten transaktionseinleitenden SQL-Anweisung nach COMMIT WORK beginnt eine neue SQL-Transaktion.


COMMIT [WORK]


SQL-Transaktion

Eine SQL-Transaktion wird mit einer transaktionseinleitenden SQL-Anweisung begonnen. Alle folgenden SQL-Anweisungen bis zur nächsten COMMIT WORK- bzw. ROLLBACK WORK-Anweisung gehören zu derselben Transaktion. COMMIT WORK bzw. ROLLBACK WORK beendet die Transaktion.

Transaktion unter openUTM

Die Anweisung COMMIT WORK ist nicht zulässig, wenn Sie mit openUTM arbeiten. In diesem Fall wird die Transaktionssteuerung komplett mit UTM-Sprachmitteln durchgeführt. Die Synchronisation von SESAM/SQL- und UTM-Transaktionen wird durch openUTM gewährleistet. Eine UTM-Transaktion endet mit dem Setzen eines Sicherungspunktes.

Transaktion einleiten

Folgende SQL-Anweisungen leiten keine Transaktion ein:

      • DECLARE CURSOR (nicht ausführbar)

      • PERMIT

      • SET CATALOG

      • SET SCHEMA

      • SET SESSION AUTHORIZATION

      • SET TRANSACTION

      • WHENEVER (nicht ausführbar)

      • Utility-Anweisungen

Die Anweisungen EXECUTE und EXECUTE IMMEDIATE leiten nur dann eine SQL-Transaktion ein, wenn die jeweils auszuführende, dynamisch formulierte Anweisung eine Transaktion einleitet.

Jede andere SQL-Anweisung leitet eine SQL-Transaktion ein, wenn sie ausgeführt wird und noch keine Transaktion offen ist.

Anweisungen innerhalb von Transaktionen

Folgende Anweisungen dürfen nicht innerhalb einer Transaktion ausgeführt werden:

      • SET SESSION AUTHORIZATION

      • SET TRANSACTION

      • Utility-Anweisungen

Eine SQL-Anweisung zur Datenmanipulation (abfragen, ändern) darf nicht innerhalb einer Transaktion ausgeführt oder vorbereitet werden, in der eine SQL-Anweisung zur Definition oder Verwaltung von Schemata, Speicherstrukturen oder Benutzereinträgen ausgeführt wird.

CALL-DML-Transaktion

Innerhalb einer CALL-DML-Transaktion ist die SQL-Anweisung COMMIT WORK nicht erlaubt (siehe Abschnitt „SQL-Anweisungen in CALL-DML-Transaktionen").

Auswirkungen von COMMIT WORK

COMMIT WORK hat Auswirkungen auf nachfolgende Transaktionen und auf die in der Transaktion geöffneten Cursor und Voreinstellungen.

Auswirkungen auf nachfolgende Transaktionen

COMMIT WORK setzt Isolations- bzw. Konsistenzlevel und Transaktionsmodus, die mit einer SET TRANSACTION-Anweisung transaktionsspezifisch eingestellt wurden, wieder auf ihre voreingestellten Werte zurück. Eine nachfolgend begonnene Transaktion besitzt daher wieder den voreingestellten Isolations- bzw. Konsistenzlevel und Transaktionsmodus, wenn diese nicht wieder mit SET TRANSACTION geändert wurden.

Auswirkungen auf Cursor (gilt nicht für lokale Cursor in Prozeduren)

COMMIT WORK schließt alle innerhalb der Transaktion geöffneten Cursor. Soll eine Cursorposition über das Transaktionsende hinaus gerettet werden, können Sie die Position mit der Anweisung STORE sichern und später mit RESTORE wiederherstellen.

Es ist möglich, einen Cursor mit der WITH HOLD-Klausel zu definieren. Ein solcher Cursor wird auch durch (erfolgreiches) COMMIT WORK nicht geschlossen. In einer nachfolgenden Transaktion kann er mit FETCH positioniert werden.

Auswirkungen auf Voreinstellungen

Mit SET CATALOG, SET SCHEMA und SET SESSION AUTHORIZATION definierte Voreinstellungen sind nach COMMIT WORK festgeschrieben.

Verhalten von SESAM/SQL im Fehlerfall

Kann eine SQL-Transaktion auf Grund eines Fehlers nicht ordnungsgemäß beendet werden, setzt SESAM/SQL die gesamte Transaktion zurück. Bei ROLLBACK WORK ist beschrieben, welche Datenbankobjekte davon betroffen sind.

Siehe auch

ROLLBACK WORK, SET TRANSACTION