PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# SET

## 名前

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

## 概要

    SET [ SESSION | LOCAL ] name { TO | = } { value | 'value' | DEFAULT }
    SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }

## 説明

`SET`コマンドは実行時設定パラメータを変更します。 項16.4に列挙されている実行時パラメータの多くは稼働中に`SET`コマンドで変更できます。 (しかし、変更するためにスーパーユーザ権限が必要な場合があります。 また、サーバあるいはセッションが始動した後には変更できないものもあります。) `SET`は現行セッションで使用される値のみに影響することに注意してください。

`SET`または`SET SESSION`が発行された後にトランザクションがアボートされると、`SET`コマンドの効力はそのトランザクションがロールバックされる時に失われます。 (この振る舞いは、PostgreSQLバージョン7.3での変更点です。 7.3より前のバージョンでは、後でエラーになっても`SET`の効果はロールバックしませんでした。) 一度トランザクションがコミットされるとその効果は、別の`SET`コマンドで上書きされない限り、セッションが終了するまで持続します。

`SET LOCAL`の効果は、コミットの有無に関わらず現在のトランザクションが終了するまでしか持続しません。 1つのトランザクション内で`SET`の後に`SET LOCAL`が続く場合は特別です。 トランザクションが終了するまでは`SET LOCAL`値が有効ですが、その後(トランザクションがコミットされると)`SET`値が有効になります。

## パラメータ

`SESSION`

  現行セッションでコマンドを有効にすることを指定します。 (`SESSION`も`LOCAL`も指定されていない場合は、これがデフォルトです。)

`LOCAL`

  現行のトランザクションでのみコマンドを有効にすることを指定します。 `COMMIT`または`ROLLBACK`の後、再びセッションレベルの設定が有効になります。 `SET LOCAL`は`BEGIN`ブロックの外側で実行されるとトランザクションは即座に終了するので、一見何も実行されていないように見えます。

`name`

  設定可能な実行時パラメータ名です。 利用可能なパラメータは、項16.4と以下に示されています。

`value`

  パラメータの新しい値です。 値は、定数、識別子、数字、あるいは、これらをコンマで区切ったリストを文字列として指定することができます。 パラメータをデフォルト値に再設定するために`DEFAULT`を使うことができます。

項16.4に記載された設定パラメータの他にも、`SET`コマンドを使用して調整するしかないものや特殊な構文を持つものが数個あります。

`NAMES`

  `SET NAMES `value``は、`SET client_encoding TO `value``の別名です。

`SEED`

  乱数生成器(`random`関数)用の内部シードを設定します。 0から1までの浮動小数点数を値として設定でき、その後、231-1で積算されます。

  シードは`setseed`関数を呼び出すことでも設定可能です。

      SELECT setseed(value);

`TIME ZONE`

  `SET TIME ZONE `value``は`SET timezone TO `value``の別名です。 `SET TIME ZONE`構文では、時間帯の指定に特殊な構文を使用できます。 有効な値の例を以下に示します。

  `'PST8PDT'`

    カリフォルニア州バークレイ用の時間帯です。

  `'Europe/Rome'`

    イタリア用の時間帯です。

  `-7`

    UTCから西に7時間分ずらした時間帯です(PDTと同じです)。 正の値はUTCから東方向であることを表します。

  `INTERVAL '-08:00' HOUR TO MINUTE`

    UTCから西に8時間分ずらした時間帯です(PSTと同じです)。

  `LOCAL`
  `DEFAULT`

    時間帯をユーザのローカルな時間帯(サーバのオペレーティングシステムのデフォルトで設定されているもの)に設定します。

  時間帯に関する詳細は項8.5を参照してください。 また、付録Bには認識可能な時間帯名の一覧があります。

## 注釈

`set_config`関数は等価な機能を提供します。 項9.20を参照してください。

## 例

スキーマの検索パスを設定します。

    SET search_path TO my_schema, public;

日付の様式を、入力方式を"day before month"とした伝統的POSTGRESに設定します。

    SET datestyle TO postgres, dmy;

カリフォルニア州バークレイの時間帯を設定します。

    SET TIME ZONE 'PST8PDT';

イタリアの時間帯を設定します。

    SET TIME ZONE 'Europe/Rome';

## 互換性

`SET TIME ZONE`は標準SQLで定義された構文を拡張したものです。 標準では数値の時間帯オフセットしか使用できないのに対し、PostgreSQLでは、より柔軟に時間帯を指定することができます。 他の全ての`SET`の持つ機能は、PostgreSQLの拡張です。

## 関連項目

RESET, SHOW

前のページ | ホーム | 次のページ
SELECT INTO | 上に戻る | SET CONSTRAINTS