Transaktion

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg

Definition

Eine Transaktion wird dann benötigt, wenn man eine Gruppe von Statements entweder komplett, oder gar nicht ausführen möchte. Hierbei wird eine Menge der Datenbankänderungen zusammengefasst und als eine Gruppe ausgeführt. Wie z. B. eine Kontobuchung von einem Konto A auf ein Konto B. Erst wenn der Betrag von Konto A abgebucht wird und bei Konto B zugeht, ist die Transaktion beendet, ansonsten muss der Ausgangszustand der Datenbank wieder hergestellt werden.

Im Ablauf einer Transaktion wird als erstes die Konsistenz der Datenbank geprüft, danach werden die Daten tabellenweise geändert. In dieser Zeit kann sich die Datenbank kurzzeitig inkonsistenten Lage befinden. Deshalb sollte eine Transaktion kurz gehalten werden.

Transaktionstypen

BEGIN TRANSACTION Markiert den Ausgangspunkt einer expliziten Transaktion für eine Verbindung.

COMMIT TRANSACTION Beendet eine Transaktion erfolgreich, wenn keine Fehler festgestellt wurden.

ROLLBACK TRANSACTION Löscht eine Transaktion, in der Fehler festgestellt wurden.. Alle durch die Transaktion geänderten Daten werden in den Ausgangszustand zurückversetzt.


Transaktionsarten

Autocommit Jede einzelne Anweisung ist eine Transaktion.

Implizite Transaktion Wenn eine vorhergehende Transaktion abgeschlossen ist, wird implizit eine neue Transaktion gestartet. Jede Transaktion wird jedoch explizit mit COMMIT oder ROLLBACK beendet.

Explizite Transaktion Jede Transaktion wird explizit mit BEGIN TRANSACTION gestartet und explizit mit COMMIT oder ROLLBACK beendet.


Syntax

Wenn eine Operation nicht ausgeführt werden kann, dann sollen die restlichen Aufträge der Transaktion rückgängig gemacht werden.

BEGIN TRANSACTION <Anweisung1> <Anweisung2> <Anweisung3> 
ROLLBACK TRANSACTION 

Wird die Transaktion vollständig ausgeführt, so erfolgt die Speicherung der Arbeit in Form einer Bestätigung durch COMMIT:

BEGIN TRANSACTION <Anweisung1> <Anweisung2> <Anweisung3>
COMMIT TRANSACTION 

Beispiel

BEGIN TRANSACTION 
CREATE TABLE person (id int, name varchar(50))
INSERT INTO person VALUES (1, 'Oliver Kahn');
COMMIT TRANSACTION


Quellen