Inhaltsverzeichnis

Transaktionen

Transaktionen - Was ist das?

Eine Transaktion ist eine Anzahl von DML - Befehlen (INSERT, UPDATE, DELETE) die eine Datenbank von einem konsistenten (alle Daten der Datenbank in einwandfreiem/fehlerlosen Zustand) Zustand in einen anderen konsistenten Zustand überführt. Sie sind nur ganz oder gar nicht möglich. Bei Problemen innerhalb der Transaktionen müssel alle (auch bereits ausgeführten Befehle) zurückgenommen (zurückgerollt - rollback) werden.

Ein praktisches Beispiel wäre eine Banküberweisung (z.B. von 100 €):

Alle 3 Aktionen müssen entweder durchgeführt oder zurückgenommen werden.

Beginn einer Transaktion

Der Beginn einer Transaktion ist immer der 1. ausgeführte DML Befehl oder das Ende einer vorhergehenden Transaktion.

Ende einer Transaktion

Eine Transaktion kann auf verschiedenen Wegen beendet werden:

Transaktionssteuerung

Implizit bei COMMIT und ROLLBACK

COMMIT

Ein COMMIT wird auch implizit bei einem DDL Befehl oder dem EXIT Befehl durchgeführt. Oft ist auch das sogenannte „AUTO-COMMIT-Flag“ gesetzt. Das heißt, dass nach jedem erfolgreichem Befehl ein COMMIT durchgeführt wird.

ROLLBACK

Ein ROLLBACK wird nach einem Systemabsturz bzw. nach einer nicht normalen Beendigung eines Tools implizit gerufen.

Status der Daten vor COMMIT bzw. ROLLBACK

Status nach COMMIT

Die Änderungen der aktuellen Transaktion werden in die Datenbank geschrieben. Der Startzustand geht verloren (kann nicht mehr erreicht werden. Alle anderen User können nun auch die Änderungen sehen. Als letztes werden alle Savepoints gelöscht und die Sperren aufgehoben.

Status nach ROLLBACK

Alle Änderungen der aktuellen Transaktion werden verworfen und der Startzustand wird wieder hergestellt. Etwaige Sperren werden wieder aufgehoben.