| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Schnell nach vorne | Nach vorne | |
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.
Meldung, wenn eine neue Transaktion gestartet wurde.
Meldung, wenn bereits eine Transaktion aktiv ist. Das hat aber keine Auswirkung auf die aktuelle Transaktion.
Wenn der Konfigurationsparameter autocommit aus ist, dann ist BEGIN nicht nötig: Jeder SQL-Befehl startet dann automatisch eine Transaktion.
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.
| Zurück | Zum Anfang | Nach vorne |
| ANALYZE | Nach oben | CHECKPOINT |