## Transaktionen

Durch Eröffnen einer Datenbanksitzung mit Hilfe einer CONNECT-Anweisung wird die erste Transaktion eröffnet. Die Eigenschaften einer Datenbanksitzung können Sie mit einer SET-Anweisung ändern. Abgeschlossen wird eine Transaktion durch die COMMIT-, die ROLLBACK- oder eine RELEASE-Anweisung. Durch die RELEASE-Anweisung wird außerdem die Datenbanksitzung geschlossen.

### Subtransaktionen

Eine Transaktion kann in weitere atomare Einheiten unterteilt werden, nämlich in Subtransaktionen. Um Subtransaktionen zu öffnen oder zu schließen können Sie eines der beiden folgenden Verfahren verwenden:

● Verwenden der SUBTRANS-Anweisungen
Eine Subtransaktion wird durch die SUBTRANS BEGIN-Anweisung eingeleitet und mit der SUBTRANS END- oder SUBTRANS ROLLBACK-Anweisung abgeschlossen.

● Verwenden eines SQL-Savepoints
Eine Subtransaktion wird durch Setzen eines SQL-Savepoints mit Hilfe der SAVEPOINT-Anweisung eingeleitet. Ein SQL-Savepoint kann mit Hilfe der RELEASE SAVEPOINT-Anweisung oder der ROLLBACK TO-Anweisung deaktiviert werden.

Entscheiden Sie sich für eines der beiden Verfahren und behalten Sie dieses Verfahren bei.

Subtransaktionen haben keinen Einfluß auf Sperren. Diese werden erst durch COMMIT oder ROLLBACK freigegeben. COMMIT oder ROLLBACK schließen implizit alle Subtransaktionen.

### Innere Transaktionen

Sie können mit Hilfe der INNER TRANSACTION-Anweisung eine Transaktion in eine Transaktion einbetten. Die eingebettete Transaktion kann beliebig beendet werden, die sie umgebende Transaktion wird unabhängig davon fortgesetzt.

### Sperren

Da das Datenbanksystem konkurrierende Transaktionen auf den gleichen Datenbankobjekten zulässt, sind zur Isolation einzelner Transaktionen Sperren auf Zeilen, Tabellen und dem Datenbankkatalog nötig.

● Die Vergabe von impliziten Sperren kann durch die Einstellung des Isolation-Levels über die CONNECT-Anweisung beeinflusst werden.

● Sperren können explizit durch die LOCK-Anweisung oder durch die Angabe einer LOCK-Option vergeben werden.

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

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

SQL-Anweisungen zur Verwaltung der Transaktionen

CONNECT-Anweisung | SET-Anweisung
COMMIT-Anweisung | ROLLBACK-Anweisung
SUBTRANS-Anweisung | SQL SAVEPOINT-Anweisungen
INNER TRANSACTION-Anweisung | LOCK-Anweisung
UNLOCK-Anweisung | RELEASE-Anweisung