SET

Name

SET --  実行時パラメータの設定

Synopsis

SET variable { TO | = } { value | 'value' | DEFAULT }
SET TIME ZONE { 'timezone' | LOCAL | DEFAULT }
  

入力

variable

設定可能な実行時パラメータです。

value

パラメータの新しい値です。パラメータをデフォルト値に再設定 するために DEFAULT を使うことができます。 文字列のリストを使うこともできますが、その要素が複雑な場合、 単一又は二重引用符で囲う必要があります。

説明

SET コマンドは実行時設定パラメータを 変更します。以下のパラメータは変えることができます。

CLIENT_ENCODING, NAMES

クライアント側のマルチバイト・エンコーディングを設定します。指定された エンコードはバックエンドでサポートされなければいけません。

このオプションは Postgres が マルチバイトサポートで構築されている場合のみ有効です。

DATESTYLE

日付/時間表示様式を選択します。二つの個別の設定が行なわれます。 デフォルトの日付/時間出力と不明瞭な入力の解釈です。

以下は日付/時間出力の様式です。

ISO

ISO 8601 様式の日付と時間を使います。(YYYY-MM-DD HH:MM:SS)。これはデフォルトです。

SQL

Oracle/Ingres 様式の日付と時間を使います。この様式は SQL (ISO 8601 様式を使っています)とは無関係で、このオプションの 名前は歴史的偶然によってつけられました。

Postgres

伝統的な Postgres の形式を使います。

German

数値型の日付表示に dd.mm.yyyy を使います。

以下の二つのオプションは、"SQL" のサブスタイルと "Postgres" の出力フォーマット、そして不明瞭な 日付入力の好ましい解釈を決定します。

European

数値型の日付表示に dd/mm/yyyy を使います。

NonEuropean, US

数値型の日付表示に mm/dd/yyyy を使います。

SET DATESTYLE の値は最初のリスト(出力様式) 、もしくは二番目のリスト(サブスタイル)のどれか、もしくは それぞれのカンマで区切られたもののどれかを使うことが可能です。

日付フォーマットの初期化は下記のように行なうことができます。

環境変数 PGDATESTYLE を設定します。 もし PGDATESTYLE が libpq に基づくクライアントのフロントエンド 環境で設定されると、libpq は自動的に DATESTYLE を 接続開始の間に PGDATESTYLE に設定します。
日付を European 規定に設定するようにオプション -o -e を使って postmaster を起動します。

DateStyle オプションはアプリケーションの移植 のためだけに意図されたものです。日付/時間の値を選択したものに フォーマットするためには、関数の to_char ファミリーを使います。

SEED

乱数発生のための内部シードを設定します。

value

random 関数が使うシードの値です。 認められる値は 0 から 1 までの浮動小数点の数で、 2^31-1 で積算されます。この積は、もし範囲外の数が使われると 警告なしでオーバーフローします。

シードは setseed SQL 関数を 呼び出すことによっても設定できます。

SELECT setseed(value);
	    

SERVER_ENCODING

サーバ側のマルチバイトエンコーディングを設定します。

このオプションは、Postgresが マルチバイトサポートを使って構築された場合にのみ有効です。

TIME ZONE, TIMEZONE

タイムゾーンの可能な値は使用しているオペレーティングシステム によって異なります。例えば、Linux では /usr/share/zoneinfo がタイムゾーンの データベースを持っています。

ここではタイムゾーンのいくつかの有効な値を挙げます。

PST8PDT

タイムゾーンをカリフォルニアに設定します。

Portugal

タイムゾーンをポルトガルに設定します。

'Europe/Rome'

タイムゾーンをイタリアに設定します。

LOCAL, DEFAULT

タイムゾーンをユーザのローカルタイムゾーン(使用している オペレーティングシステムがデフォルトで設定されているもの) に設定します。

もし無効なタイムゾーンが指定されると、タイムゾーンは (ほとんどのシステムでいいかげんながらも)GMT に 設定されます。

もし PGTZ 環境変数が libpq に基づくクライアントのフロントエンド 環境に設定されている場合 libpq は接続を開始する間に自動的に TIMEZONE を PGTZ の値に設定します。

他の実行時パラメータの拡張されたリストは 管理者用ガイド で見ることができます。

現在のパラメータの設定を表示するために SHOWを使います。

診断

SET VARIABLE

成功した場合に返されるメッセージです。

ERROR: not a valid option name: name

設定しようとしたパラメータは存在しません。

ERROR: permission denied

特定の設定にアクセスするためにはスーパーユーザでなくては いけません。

ERROR: name can only be set at start-up

サーバが起動されると、いくつかのパラメータが固定されます。

日付の様式を伝統的 Postgres の European 形式に設定します。

SET DATESTYLE TO Postgres,European;
タイムゾーン指定子の大文字属性を保持するために二重引用符を使い、 (ここでは日付/時間フォーマットが ISO であることに注意してください) タイムゾーンをカリフォルニア、バークレイに設定します。
 
SET TIME ZONE "PST8PDT";
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 07:41:21-08
タイムゾーンをイタリアに設定します(特殊文字を扱うのに必要とされる 単一もしくは二重引用符に注意して下さい)。
 
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 17:41:31+02

互換性

SQL92

上記で示された二番目の構文 (SET TIME ZONE) は SQL92 を真似しようとしています。しかし、 SQL は数値タイムゾーンオフセットのみを認めます。上記で示される 最初の構文と他の全てのパラメータ設定は、Postgres の拡張です。