SET <refpurpose>change a run-time parameter</refpurpose> — 実行時パラメータを変更する
SET [ SESSION | LOCAL ]configuration_parameter
{ TO | = } {value
| 'value
' | DEFAULT } SET [ SESSION | LOCAL ] TIME ZONE {value
| 'value
' | LOCAL | DEFAULT }
The <command>SET</command> command changes run-time configuration
parameters. Many of the run-time parameters listed in
<xref linkend="runtime-config"/> can be changed on-the-fly with
<command>SET</command>.
(Some parameters can only be changed by superusers and users who
have been granted <literal>SET</literal> privilege on that parameter.
There are also parameters that cannot be changed after server or
session start.)
<command>SET</command> only affects the value used by the current
session.
SET
コマンドは実行時設定パラメータを変更します。
第19章に列挙されている実行時パラメータの多くは稼働中にSET
コマンドで変更できます。
(パラメータの中には、スーパーユーザとそのパラメータのSET
権限を付与されたユーザだけが変更できるものもあります。
また、サーバあるいはセッションの始動後は変更できないパラメータもあります。)
SET
は現行セッションで使用される値にのみ影響することに注意してください。
If <command>SET</command> (or equivalently <command>SET SESSION</command>)
is issued within a transaction that is later aborted, the effects of the
<command>SET</command> command disappear when the transaction is rolled
back. Once the surrounding transaction is committed, the effects
will persist until the end of the session, unless overridden by another
<command>SET</command>.
SET
(またはSET SESSION
も同じ)が発行された後にトランザクションがアボートされると、トランザクションがロールバックした時点でSET
コマンドの効力は失われます。
一度トランザクションがコミットされると、別のSET
コマンドで上書きされない限り、セッションが終了するまでその効果が持続します。
The effects of <command>SET LOCAL</command> last only till the end of
the current transaction, whether committed or not. A special case is
<command>SET</command> followed by <command>SET LOCAL</command> within
a single transaction: the <command>SET LOCAL</command> value will be
seen until the end of the transaction, but afterwards (if the transaction
is committed) the <command>SET</command> value will take effect.
SET LOCAL
の効果は、コミットのされたかどうかにかかわらず現在のトランザクションが終了するまでしか持続しません。
1つのトランザクション内でSET
の後にSET LOCAL
が続く特殊な例を考えてみましょう。
この場合、トランザクションが終了するまではSET LOCAL
値が有効ですが、その後(トランザクションがコミットされたとして)SET
値が有効になります。
The effects of <command>SET</command> or <command>SET LOCAL</command> are
also canceled by rolling back to a savepoint that is earlier than the
command.
SET
もしくはSET LOCAL
の効果は、このコマンドより以前のセーブポイントまでロールバックした場合は取り消されます。
If <command>SET LOCAL</command> is used within a function that has a
<literal>SET</literal> option for the same variable (see
<xref linkend="sql-createfunction"/>),
the effects of the <command>SET LOCAL</command> command disappear at
function exit; that is, the value in effect when the function was called is
restored anyway. This allows <command>SET LOCAL</command> to be used for
dynamic or repeated changes of a parameter within a function, while still
having the convenience of using the <literal>SET</literal> option to save and
restore the caller's value. However, a regular <command>SET</command> command
overrides any surrounding function's <literal>SET</literal> option; its effects
will persist unless rolled back.
SET LOCAL
を同じ変数に対するSET
オプション(CREATE FUNCTIONを参照)を持つ関数内で使用する場合、SET LOCAL
コマンドの効果は関数終了時に消滅します。
つまり、関数が呼び出された時に有効だった値にとにかく戻されます。
これによりSET LOCAL
は、呼び出し元の値を保管し元に戻すというSET
オプションを使用する利点を持ちつつ、関数内で動的または繰り返し変更されるパラメータ用に使用できます。
しかし、通常のSET
コマンドでは上位の関数のSET
オプションを上書きしてしまい、その効果はロールバックしない限り永続します。
In <productname>PostgreSQL</productname> versions 8.0 through 8.2,
the effects of a <command>SET LOCAL</command> would be canceled by
releasing an earlier savepoint, or by successful exit from a
<application>PL/pgSQL</application> exception block. This behavior
has been changed because it was deemed unintuitive.
PostgreSQLバージョン8.0から8.2まででは、SET LOCAL
の効果は、より以前のセーブポイントを解放すること、または、PL/pgSQL例外ブロックから正常終了することで取り消されました。
直観的ではないようですので、この動作は変更されました。
SESSION
Specifies that the command takes effect for the current session.
(This is the default if neither <literal>SESSION</literal> nor
<literal>LOCAL</literal> appears.)
コマンドの有効範囲が現行セッションであることを指定します。
(SESSION
もLOCAL
も指定されていない場合は、これがデフォルトです。)
LOCAL
Specifies that the command takes effect for only the current
transaction. After <command>COMMIT</command> or <command>ROLLBACK</command>,
the session-level setting takes effect again. Issuing this
outside of a transaction block emits a warning and otherwise has
no effect.
コマンドの有効範囲が現行のトランザクションのみであることを指定します。
COMMIT
またはROLLBACK
の後は、再びセッションレベルの設定が有効になります。
これをトランザクションブロックの外側で実行すると、警告が発生しますが、それ以外には何の効果もありません。
configuration_parameter
Name of a settable run-time parameter. Available parameters are documented in <xref linkend="runtime-config"/> and below. 設定可能な実行時パラメータ名です。 利用可能なパラメータは、第19章と以下に示します。
value
New value of parameter. Values can be specified as string
constants, identifiers, numbers, or comma-separated lists of
these, as appropriate for the particular parameter.
<literal>DEFAULT</literal> can be written to specify
resetting the parameter to its default value (that is, whatever
value it would have had if no <command>SET</command> had been executed
in the current session).
パラメータの新しい値です。
値として、文字列定数、識別子、数字、あるいはこれらをカンマで区切ったリストを対象のパラメータで適切となるように、指定することができます。
DEFAULT
と記述することで、パラメータをデフォルト値(つまり、現在のセッションでSET
が実行されなかった時に設定される値)に再設定することができます。
Besides the configuration parameters documented in <xref
linkend="runtime-config"/>, there are a few that can only be
adjusted using the <command>SET</command> command or that have a
special syntax:
第19章に記載された設定パラメータの他に、SET
コマンドを使用してのみ調整できるパラメータや特殊な構文を持つパラメータがいくつかあります。
SCHEMA
SET SCHEMA '
はvalue
'SET search_path TO
の別名です。
この構文を使用する場合は1つのスキーマのみを指定することができます。
value
NAMES
SET NAMES
は、value
SET client_encoding TO
の別名です。
value
SEED
Sets the internal seed for the random number generator (the
function <function>random</function>). Allowed values are
floating-point numbers between -1 and 1 inclusive.
乱数ジェネレータ(random
関数)用の内部シードを設定します。
(-1と1も含めて)-1から1までの浮動小数点数を値として設定できます。
The seed can also be set by invoking the function
<function>setseed</function>:
シードはsetseed
関数を呼び出すことでも設定可能です。
SELECT setseed(value
);
TIME ZONE
SET TIME ZONE '
はvalue
'SET timezone TO '
の別名です。
value
'SET TIME ZONE
構文では、時間帯の指定に特殊な構文を使用できます。
有効な値の例を以下に示します。
'America/Los_Angeles'
The time zone for Berkeley, California. カリフォルニア州バークレイ用の時間帯です。
'Europe/Rome'
The time zone for Italy. イタリア用の時間帯です。
-7
The time zone 7 hours west from UTC (equivalent to PDT). Positive values are east from UTC. UTCから西に7時間分ずらした時間帯です(PDTと同じです)。 正の値はUTCから東方向です。
INTERVAL '-08:00' HOUR TO MINUTE
The time zone 8 hours west from UTC (equivalent to PST). UTCから西に8時間分ずらした時間帯です(PSTと同じです)。
LOCAL
DEFAULT
Set the time zone to your local time zone (that is, the
server's default value of <varname>timezone</varname>).
時間帯をユーザのローカルな時間帯(サーバのデフォルトのtimezone
値)に設定します。
Timezone settings given as numbers or intervals are internally
translated to POSIX timezone syntax. For example, after
<literal>SET TIME ZONE -7</literal>, <command>SHOW TIME ZONE</command> would
report <literal><-07>+07</literal>.
時間帯を数字あるいは時間で指定した時は、内部的にPOSIXの時間帯構文として解釈されます。
例えば、SET TIME ZONE -7
とした後、SHOW TIME ZONE
を実行すると、その結果は<-07>+07
となります。
Time zone abbreviations are not supported by <command>SET</command>;
see <xref linkend="datatype-timezones"/> for more information
about time zones.
時間帯の省略形はSET
ではサポートされていません。時間帯に関する詳細は8.5.3を参照してください。
The function <function>set_config</function> provides equivalent
functionality; see <xref linkend="functions-admin-set"/>.
Also, it is possible to UPDATE the
<link linkend="view-pg-settings"><structname>pg_settings</structname></link>
system view to perform the equivalent of <command>SET</command>.
set_config
関数は等価な機能を提供します。
9.28.1を参照してください。
また、pg_settings
システムビューを更新することで、SET
と同じことを実行することができます。
Set the schema search path: スキーマの検索パスを設定します。
SET search_path TO my_schema, public;
Set the style of date to traditional <productname>POSTGRES</productname> with <quote>day before month</quote> input convention: 日付のスタイルを、伝統的なPOSTGRES入力方式に設定し、さらに「day before month(月の前に日)」を使います。
SET datestyle TO postgres, dmy;
Set the time zone for Berkeley, California: 時間帯をカリフォルニア州バークレイに設定します。
SET TIME ZONE 'America/Los_Angeles';
Set the time zone for Italy: 時間帯をイタリアに設定します。
SET TIME ZONE 'Europe/Rome';
<literal>SET TIME ZONE</literal> extends syntax defined in the SQL
standard. The standard allows only numeric time zone offsets while
<productname>PostgreSQL</productname> allows more flexible
time-zone specifications. All other <literal>SET</literal>
features are <productname>PostgreSQL</productname> extensions.
SET TIME ZONE
は標準SQLで定義された構文を拡張したものです。
標準では数値による時間帯オフセットしか使用できないのに対し、PostgreSQLでは、より柔軟に時間帯を指定することができます。
SET
が持つその他の機能は、全てPostgreSQLの拡張です。