| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Schnell nach vorne | Nach vorne | |
SET [ SESSION | LOCAL ] variable { TO | = } { wert | 'wert' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { zeitzone | LOCAL | DEFAULT }Der Befehl SET ändert die Werte von Konfigurationsparametern. Viele der in Abschnitt 16.4 aufgelisteten Parameter können zur Laufzeit mit SET geändert werden. (Aber einige erfordern Superuser-Privilegien und einige andere können nach dem Start der Sitzung nicht mehr geändert werden.) SET wirkt sich nur auf die aktuelle Sitzung aus.
Wenn SET oder SET SESSION in einer Transaktion ausgeführt wird, die später abgebrochen wird, dann werden die Auswirkungen des SET-Befehls rückgängig gemacht, wenn die Transaktion zurückgerollt wird. (Dieses Verhalten wurde in PostgreSQL Version 7.3 eingeführt. Vorher wurden SET-Befehle nicht nach einem Fehler zurückgerollt.) Wenn die Transaktion zurückgerollt wird, dann bleibt die Auswirkung des SET-Befehls bis zum Ende der Sitzung bestehen, es sei denn ein weiterer SET-Befehl ändert den selben Parameter.
Die Auswirkungen von SET LOCAL bleiben nur bis zum Ende der aktuellen Transaktion bestehen, egal ob sie abgebrochen oder erfolgreich abgeschlossen wird. Ein Sonderfall ist ein SET gefolgt von einem SET LOCAL in der selben Transaktion: Der von SET LOCAL gesetzte Wert bleibt bis zum Ende der Transaktion gesetzt, aber danach (nachdem die Transaktion abgeschlossen wurde) wird der von SET gesetzte aktiv.
Selbst wenn autocommit aus ist, wird durch SET kein neuer Transaktionsblock gestartet. Einzelheiten dazu finden Sie im Abschnitt über autocommit in Abschnitt 16.4.
Gibt an, dass der Befehl für die aktuelle Sitzung gelten soll. (Das ist die Voreinstellung, wenn weder SESSION noch LOCAL angegeben wurden.)
Gibt an, dass der Befehl nur für die aktuelle Transaktion gelten soll. Nach COMMIT oder ROLLBACK gilt wieder der Sitzungswert. Beachten Sie, dass SET LOCAL scheinbar ohne Auswirkung bleibt, wenn es außerhalb eines BEGIN-Blocks ausgeführt wird, weil die Transaktion dann sofort zu Ende ist.
Der Name eines Konfigurationsparameters. Die verfügbaren Parameter sind in Abschnitt 16.4 und unten beschrieben.
Der neue Wert des Parameters. Werte können als Zeichenkettenkonstanten, Bezeichner, Zahlen oder als Liste von diesen, getrennt durch Kommas, angegeben werden. DEFAULT kann verwendet werden um den Parameter wieder auf seinen Vorgabewert zurückzusetzen.
Neben den in Abschnitt 16.4 beschriebenen Konfigurationsparametern gibt es einige wenige, die nur mit dem Befehl SET gesetzt werden können oder die eine besondere Syntax haben:
SET NAMES wert hat die selbe Bedeutung wie SET client_encoding TO wert.
Setzt den internen Samen für den Zufallszahlengenerator (die Funktion random). Gültige Wert sind Fließkommazahlen zwischen 0 und 1, die dann mit 231-1 multipliziert werden.
Der Samen kann auch mit der Funktion setseed gesetzt werden:
SELECT setseed(wert);
SET TIME ZONE wert hat die selbe Bedeutung wie SET timezone TO wert. Die Syntax SET TIME ZONE erlaubt eine besondere Syntax für die Zeitzonenangaben. Hier sind Beispiele für gültige Zeitzonenangaben:
Die Zeitzone von Berkeley, Kalifornien.
Die Zeitzone von Portugal.
Die Zeitzone von Deutschland.
Die Zeitzone 7 Stunden westlich von UTC (entspricht PDT).
Die Zeitzone 8 Stunden westlich von UTC (entspricht PST).
Setzt die Zeitzone auf die lokale Zeitzone (die im Betriebssystem eingestellte).
Siehe Abschnitt 8.5 für weitere Informationen über Zeitzonen.
Meldung, wenn der Befehl erfolgreich ausgeführt wurde.
Den Parameter, den Sie setzen wollten, gibt es nicht.
Um bestimmte Einstellungen zu ändern müssen Sie ein Superuser sein.
Einige Parameter können nicht mehr geändert werden, nachdem der Server gestartet wurde.
Die Funktion set_config kann auch verwendet werden um die Werte von Konfigurationsparametern zu setzen. Siehe Abschnitt 9.13.
Setze den Schemasuchpfad:
SET search_path TO mein_schema, public;
Setze das Datumsformat auf den traditionellen POSTGRES-Stil mit dem europäischen Modus:
SET datestyle TO postgres, european;
Setze die Zeitzone für Deutschland (beachten Sie die Apostrophe wegen der Großbuchstaben und Sonderzeichen in der Zeitzonenangabe):
SET TIME ZONE 'Europe/Berlin';
SELECT current_timestamp AS heute;
heute
-------------------------------
2003-04-30 00:00:42.139638+02
SET TIME ZONE erweitert die vom SQL-Standard definierte Syntax. Der Standard erlaubt nur numerische Zeitzonenangaben, während PostgreSQL flexiblere Zeitzonenangaben erlaubt. Alle anderen SET-Funktionen sind PostgreSQL-Erweiterungen.
| Zurück | Zum Anfang | Nach vorne |
| SELECT INTO | Nach oben | SET CONSTRAINTS |