| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Schnell nach vorne | Nach vorne | |
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }Der Befehl SET TRANSACTION setzt den Transaktionsisolationsgrad der aktuellen Transaktion. Er hat auf nachfolgende Transaktionen keine Auswirkung. Dieser Befehl kann nicht mehr ausgeführt werden, nachdem die ersten Anfrage oder der erste Datenmodifikationsbefehl (SELECT, INSERT, DELETE, UPDATE, FETCH, COPY) in einer Transaktion ausgeführt wurde. SET SESSION CHARACTERISTICS setzt den Standard-Transaktionsisolationsgrad für neue Transaktionen in der aktuellen Sitzung. Mit SET TRANSACTION kann er für jede Transaktions einzeln geändert werden.
Der Transaktionsisolationsgrad bestimmt, welche Daten eine Transaktion sehen kann, wenn andere Transaktionen gleichzeitig ablaufen.
Ein Befehl kann nur Daten aus Transaktionen sehen, die abgeschlossen wurden, bevor der Befehl begann. Das ist die Voreinstellung.
Die aktuelle Transaktion kann nur Daten aus Transaktionen sehen, die abgeschlossen wurden, bevor die erste Anfrage oder der erste Datenmodifikationsbefehl in dieser Transaktion ausgeführt wurde.
Tipp: Intuitiv bedeutet das, dass zwei gleichzeitige Transaktionen die Datenbank in dem Zustand hinterlassen, den sie gehabt hätte, wenn die beiden Transaktionen streng hintereinander ausgeführt worden wären.
Weitere Informationen dazu finden Sie in Kapitel 12.
Der voreingestellte Transaktionsisolationsgrad kann auch mit dem Befehl
SET default_transaction_isolation = 'wert'
und in der Konfigurationsdatei gesetzt werden. Siehe Abschnitt 16.4.
Beide Befehle sind im SQL-Standard definiert. Im SQL-Standard ist der Standard-Transaktionsisolationsgrad SERIALIZABLE; in PostgreSQL ist es READ COMMITED, aber das können Sie wie oben beschrieben ändern. In PostgreSQL gibt es nicht die Isolationsgrade READ UNCOMMITTED und REPEATABLE READ. Wegen des Multiversionsmodells in PostgreSQL ist der Grad SERIALIZABLE nicht wirklich serialisierbar. Einzelheiten finden Sie in Kapitel 12.
Der SQL-Standard sieht zwei weitere Transaktionscharakteristika vor, die mit diesen Befehlen gesetzt werden können: Ob die Transaktion nur Lesevorgänge erlaubt und die Größe des Diagnosebereichs. Beide werden von PostgreSQL nicht unterstützt.
| Zurück | Zum Anfang | Nach vorne |
| SET SESSION AUTHORIZATION | Nach oben | SHOW |