Anfang des InhaltsbereichsTransaktionen Dokument im Navigationsbaum lokalisieren

Eine Transaktion ist eine Folge von SQL-Anweisungen, die vom Datenbanksystem als atomare Einheit behandelt wird, und zwar in dem Sinn, daß die durch die SQL-Anweisungen hervorgerufenen Datenbankänderungen entweder alle im Datenbankzustand repräsentiert sind, oder daß andernfalls keine der Änderungen in der Datenbank vorhanden ist.

Durch Eröffnen einer Sitzung mit Hilfe der CONNECT-Anweisung wird die erste Transaktion eröffnet. Abgeschlossen wird eine Transaktion durch die COMMIT-Anweisung oder die ROLLBACK-Anweisung. Wenn die Transaktion durch eine COMMIT-Anweisung erfolgreich beendet wird, sind alle Datenbankänderungen dauerhaft. Wird die Transaktion dagegen durch eine ROLLBACK-Anweisung beendet oder anderweitig abgebrochen, werden alle innerhalb der Transaktion durchgeführten Datenbankänderungen rückgängig gemacht.

Sowohl die COMMIT- als auch die ROLLBACK-Anweisung eröffnen implizit eine neue Transaktion.

Sperren

Da das Datenbanksystem konkurrierende Transaktionen auf den gleichen Datenbankobjekten zuläßt, sind zur Isolation einzelner Transaktionen Sperren auf Zeilen, Tabellen und dem Katalog nötig. Sperren werden entweder implizit durch das Datenbanksystem während der Bearbeitung einer SQL-Anweisung oder explizit durch die LOCK-Anweisung vergeben. Diese Sperren werden der Transaktion, die die SQL-Anweisung bzw. die LOCK-Anweisung enthält, zugeordnet. Das Datenbanksystem unterscheidet SHARE-Sperren und exklusive Sperren, die sich entweder auf Zeilen oder Tabellen beziehen, und optimistische Zeilensperren. Daneben gibt es noch spezielle Sperren für die Metadaten des Katalogs, die jedoch immer implizit vergeben werden.

Exklusive Sperren für Zeilen, die noch nicht geändert wurden, und SHARE-Sperren auf Zeilen können durch die UNLOCK-Anweisung vor Transaktionsende freigegeben werden.

Die einer Transaktion zugeordneten Sperren werden im Normalfall am Transaktionsende freigegeben, so daß die entsprechenden Datenbankobjekte wieder für andere Transaktionen zugänglich sind.

Eine schematische Übersicht über die mögliche Parallelität von Sperren zeigt die folgende Tabelle. EXCL steht dabei für exklusive Sperre, SHARE für SHARE-Sperre.

Diese Grafik wird im zugehörigen Text erklärt

In Fällen, die mit "Nein" gekennzeichnet sind, liegt eine Sperrkollision vor, d. h. die Anforderung einer Sperre innerhalb einer Transaktion führt dazu, daß auf die Freigabe einer Sperre gewartet werden muß, bis eine der oben genannten oder eine der in der Matrix mit "Ja" gekennzeichneten Situationen vorliegt.

Subtransaktionen

Eine Transaktion kann durch die SQL-Anweisungen SUBTRANS BEGIN, SUBTRANS END und SUBTRANS ROLLBACK (SUBTRANS-Anweisung) in weitere atomare Einheiten unterteilt werden. Diese können beliebig geschachtelt sein. Im Gegensatz zu Transaktionen können die Änderungen einer Subtransaktion aber auch dann durch die ROLLBACK-Anweisung oder ein SUBTRANS ROLLBACK einer übergeordneten Subtransaktion rückgängig gemacht werden, wenn die Subtransaktion durch SUBTRANS END beendet wurde.

 

SQL-Anweisungen zur Verwaltung der Transaktionen

CONNECT-Anweisung

SET-Anweisung

 

COMMIT-Anweisung

ROLLBACK-Anweisung

SUBTRANS-Anweisung

LOCK-Anweisung

UNLOCK-Anweisung

RELEASE-Anweisung

Ende des Inhaltsbereichs