《PostgreSQL Conference Japan 2018》   他のバージョンの文書10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

SET

Name

SET -- 実行時パラメータの変更

Synopsis

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

入力

variable

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

value

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

説明

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

CLIENT_ENCODING
NAMES

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

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

DATESTYLE

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

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

ISO

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

SQL

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

PostgreSQL

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

German

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

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

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 までの浮動小数点の数で、231-1 で積算されます。この積は、もし範囲外の数が使われると警告なしでオーバーフローします。

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

SELECT setseed(value);

SERVER_ENCODING

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

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

TIME ZONE
TIMEZONE

セッションにおけるデフォルトのタイムゾーンを設定します。引数は、SQL 時間間隔定数、整数または浮動小数精度の定数、ホストのオペレーティングシステムがサポートするタイムゾーンを表す文字列のいずれかを指定することができます。

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

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

'PST8PDT'

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

'Portugal'

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

'Europe/Rome'

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

7

GMTから西に7時間分ずらしたタイムゾーンに設定します。(PDT と同じです。)

INTERVAL '08:00' HOUR TO MINUTE

GMTから西に8時間分ずらしたタイムゾーンに設定します。(PST と同じです。)

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

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

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

SET DATESTYLE TO PostgreSQL,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 は数値タイムゾーンオフセットのみを認めます。上記で示される最初の構文と他の全てのパラメータ設定は、PostgreSQL の拡張です。