SET

Name

SET -- ändert einen Konfigurationsparameter

Synopsis

SET [ SESSION | LOCAL ] variable { TO | = } { wert | 'wert' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { zeitzone | LOCAL | DEFAULT }

Beschreibung

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.

Parameter

SESSION

Gibt an, dass der Befehl für die aktuelle Sitzung gelten soll. (Das ist die Voreinstellung, wenn weder SESSION noch LOCAL angegeben wurden.)

LOCAL

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.

variable

Der Name eines Konfigurationsparameters. Die verfügbaren Parameter sind in Abschnitt 16.4 und unten beschrieben.

wert

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:

NAMES

SET NAMES wert hat die selbe Bedeutung wie SET client_encoding TO wert.

SEED

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);

TIME ZONE

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:

'PST8PDT'

Die Zeitzone von Berkeley, Kalifornien.

'Portugal'

Die Zeitzone von Portugal.

'Europe/Berlin'

Die Zeitzone von Deutschland.

7

Die Zeitzone 7 Stunden westlich von UTC (entspricht PDT).

INTERVAL '08:00' HOUR TO MINUTE

Die Zeitzone 8 Stunden westlich von UTC (entspricht PST).

LOCAL
DEFAULT

Setzt die Zeitzone auf die lokale Zeitzone (die im Betriebssystem eingestellte).

Siehe Abschnitt 8.5 für weitere Informationen über Zeitzonen.

Meldungen

SET

Meldung, wenn der Befehl erfolgreich ausgeführt wurde.

ERROR: 'name' is not a valid option name

Den Parameter, den Sie setzen wollten, gibt es nicht.

ERROR: 'name': permission denied

Um bestimmte Einstellungen zu ändern müssen Sie ein Superuser sein.

ERROR: 'name' cannot be changed after server start

Einige Parameter können nicht mehr geändert werden, nachdem der Server gestartet wurde.

Hinweise

Die Funktion set_config kann auch verwendet werden um die Werte von Konfigurationsparametern zu setzen. Siehe Abschnitt 9.13.

Beispiele

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

Kompatibilität

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.

Siehe Auch

RESET, SHOW