Databases Reference
In-Depth Information
in die Tabelle ein, zeigt uns die
select
-Anweisung selbstverständlich drei Da-
tensätze. Wie viele Datensätze sind in der Datenbank, wenn wir die Anweisung
rollback
erneut ausführen? Wir sahen ja bereits, dass Änderungen durch die
rollback
-Anweisung rückgängig gemacht werden. Es stellt sich die Frage, wel-
che Änderungen vom
rollback
betroffen sind.
Es ist kein Zufall, dass unsere
select
-Anweisung nach einem weiteren
rollback
zwei Datensätze anzeigt: Die
rollback
-Anweisung macht alle Än-
derungen seit dem letzten
commit
rückgängig.
Mit Hilfe von
commit
können wir also Anweisungen zu so genannten
Transak-
tionen
gruppieren;
commit
schließt eine Transaktion ab und leitet die nächste ein.
Eine offene Transaktion ist eine Transaktion, die noch nicht mit
commit
abge-
schlossen wurde. Mit der Anweisung
rollback
können wir offene Transak-
tionen abbrechen und alle Änderungen rückgängig machen, die innerhalb der
Transaktion durchgeführt wurden. In Abschnitt 17.2 haben wir eine
update
-
Anweisung für die Tabelle
konten
unterbrochen. Da anschließend keine Ände-
rung mehr sichtbar war, wurde offenbar implizit ein
rollback
durchgeführt.
Definition: Transaktionen
Eine Transaktion ist eine atomare Folge von SQL-Anweisungen.
Eine Folge von SQL-Anweisungen heißt
atomar
, wenn entweder
alle Anweisungen der Folge ausgeführt wurden oder
keine Anweisung der Folge ausgeführt wurde.
Eine Transaktion wird also ganz oder gar nicht ausgeführt. So wird eine wichtige
Eigenschaft einer Transaktion sichergestellt.
Hinweis
Eine Transaktion transformiert eine Datenbank von einem konsisten-
ten Zustand in einen konsistenten Zustand.
Im Standardfall führt H2 - wie die meisten anderen RDBMS auch - nach jeder
SQL-Anweisung implizit die
commit
-Anweisung aus. Dieses Verhalten können
wir mit
set autocommit on
und