BEGIN

Name

BEGIN -- startet einen Transaktionsblock

Synopsis

BEGIN [ WORK | TRANSACTION ]

Beschreibung

In der Standardeinstellung führt PostgreSQL Transaktionen im „Autocommit“-Modus aus, das heißt, jeder Befehl wird in einer eigenen Transaktion ausgeführt und diese Transaktion wird am Ende des Befehls automatisch abgeschlossen (wenn die Ausführung erfolgreich war, ansonsten wird die Transaktion zurückgerollt). BEGIN startet einen Transaktionsblock, das heißt, dass alle Befehle nach dem BEGIN-Befehl zusammen in einer Transaktion ausgeführt werden, bis ein ausdrückliches COMMIT oder ROLLBACK kommt. In Transaktionsblöcken werden Befehle schneller ausgeführt, weil der Start und der Abschluss einer Transaktion erhebliche Prozessorleistung und Festplattenaktivität fordert. Das Ausführen von mehreren Befehlen in einer Transaktion ist auch nützlich um die Konsistenz zu erhalten, wenn mehrere in Verbindung stehende Tabellen geändert werden, denn andere Sitzungen werden dann die Zwischenzustände, in denen noch nicht alle zusammenhängenden Änderungen getätigt worden sind, nicht sehen können.

Parameter

WORK
TRANSACTION

Optionale Schlüsselwörter ohne jegliche Auswirkung.

Meldungen

BEGIN

Meldung, wenn eine neue Transaktion gestartet wurde.

WARNING: BEGIN: already a transaction in progress

Meldung, wenn bereits eine Transaktion aktiv ist. Das hat aber keine Auswirkung auf die aktuelle Transaktion.

Hinweise

Wenn der Konfigurationsparameter autocommit aus ist, dann ist BEGIN nicht nötig: Jeder SQL-Befehl startet dann automatisch eine Transaktion.

Beispiele

Um einen Transaktionsblock zu beginnen:

BEGIN;

Kompatibilität

Der Befehl BEGIN ist eine PostgreSQL-Erweiterung. Im SQL-Standard gibt es keinen BEGIN-Befehl; eine Transaktion wird immer implizit gestartet und vom Befehl COMMIT oder ROLLBACK beendet.

Einige andere Datenbanksysteme bieten auch einen Autocommit-Modus an.

Zufällig wird das Schlüsselwort BEGIN in eingebettetem SQL für einen anderen Zweck verwendet. Beachten Sie bei der Portierung von Datenbankanwendungen immer die Transaktionsmodi.

Siehe Auch

COMMIT, ROLLBACK, START TRANSACTION