.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "SET" "" "2007-05-04" "SQL - 言語" "SQLコマンド"
.SH NAME
SET \- 実行時パラメータを変更する

.SH SYNOPSIS
.sp
.nf
SET [ SESSION | LOCAL ] \fIconfiguration_parameter\fR { TO | = } { \fIvalue\fR | '\fIvalue\fR' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { \fItimezone\fR | LOCAL | DEFAULT }
.sp
.fi
.SH "説明"
.PP
\fBSET\fRコマンドは実行時設定パラメータを変更します。
in the documentationに列挙されている実行時パラメータの多くは稼働中に\fBSET\fRコマンドで変更できます
（ただし、変更するためにスーパーユーザ権限が必要な場合があります。
また、サーバあるいはセッションの始動後は変更できないパラメータもあります）。
\fBSET\fRは現行セッションで使用される値にのみ影響することに注意してください。
.PP
\fBSET\fRまたは\fBSET SESSION\fRが発行された後にトランザクションがアボートされると、トランザクションがロールバックした時点で\fBSET\fRコマンドの効力は失われます
（この振舞いは、PostgreSQLバージョン7.3での変更点です。
7.3より前のバージョンでは、その後エラーが発生しても\fBSET\fRの効果はロールバックされませんでした）。 
一度トランザクションがコミットされると、別の\fBSET\fRコマンドで上書きされない限り、セッションが終了するまでその効果が持続します。
.PP
\fBSET LOCAL\fRの効果は、コミットの有無にかかわらず現在のトランザクションが終了するまでしか持続しません。
1つのトランザクション内で\fBSET\fRの後に\fBSET LOCAL\fRが続く特殊な例を考えてみましょう。
この場合、トランザクションが終了するまでは\fBSET LOCAL\fR値が有効ですが、その後（トランザクションがコミットされると）\fBSET\fR値が有効になります。
.SH "パラメータ"
.TP
\fBSESSION\fR
コマンドの有効範囲が現行セッションであることを指定します
（\fBSESSION\fRも\fBLOCAL\fRも指定されていない場合は、これがデフォルトです）。
.TP
\fBLOCAL\fR
コマンドの有効範囲が現行のトランザクションのみであることを指定します。
\fBCOMMIT\fRまたは\fBROLLBACK\fRの後は、再びセッションレベルの設定が有効になります。
\fBSET LOCAL\fRを\fBBEGIN\fRブロックの外側で実行すると、トランザクションが即座に終了するため、一見何も実行されていないように見えます。
.TP
\fB\fIconfiguration_parameter\fB\fR
設定可能な実行時パラメータ名です。
利用可能なパラメータは、in the documentationと以下に示します。
.TP
\fB\fIvalue\fB\fR
パラメータの新しい値です。
値として、文字列定数、識別子、数字、あるいはこれらをカンマで区切ったリストを指定することができます。
\fBDEFAULT\fRを使うと、パラメータをデフォルト値に再設定することができます。
.PP
in the documentationに記載された設定パラメータの他にも、\fBSET\fRコマンドを使用して調整するしかないパラメータや特殊な構文を持つパラメータがいくつかあります。
.TP
\fBNAMES\fR
SET NAMES \fIvalue\fRは、SET client_encoding TO \fIvalue\fRの別名です。
.TP
\fBSEED\fR
乱数ジェネレータ（\fBrandom\fR関数）用の内部シードを設定します。
0から1までの浮動小数点数を値として設定できます。その後、この値には231-1がかけられます。

シードは\fBsetseed\fR関数を呼び出すことでも設定可能です。
.sp
.nf
SELECT setseed(\fIvalue\fR);
.sp
.fi
.TP
\fBTIME ZONE\fR
SET TIME ZONE \fIvalue\fRはSET timezone TO \fIvalue\fRの別名です。
SET TIME ZONE構文では、時間帯の指定に特殊な構文を使用できます。
有効な値の例を以下に示します。
.RS
.TP
\fB\&'PST8PDT'\fR
カリフォルニア州バークレイ用の時間帯です。
.TP
\fB\&'Europe/Rome'\fR
イタリア用の時間帯です。
.TP
\fB-7\fR
UTCから西に7時間分ずらした時間帯です（PDTと同じです）。
正の値はUTCから東方向です。
.TP
\fBINTERVAL '-08:00' HOUR TO MINUTE\fR
UTCから西に8時間分ずらした時間帯です（PSTと同じです）。
.TP
\fBLOCAL\fR
.TP
\fBDEFAULT\fR
時間帯をユーザのローカルな時間帯（サーバのオペレーティングシステムのデフォルトで設定されているもの）に設定します。
.RE
.PP
時間帯に関する詳細はin the documentationを参照してください。
.PP
.PP
.SH "注釈"
.PP
\fBset_config\fR関数は等価な機能を提供します。
in the documentationを参照してください。
.SH "例"
.PP
スキーマの検索パスを設定します。
.sp
.nf
SET search_path TO my_schema, public;
.sp
.fi
.PP
日付のスタイルを、``day before month''の伝統的なPOSTGRES入力方式に設定します。
.sp
.nf
SET datestyle TO postgres, dmy;
.sp
.fi
.PP
時間帯をカリフォルニア州バークレイに設定します。
.sp
.nf
SET TIME ZONE 'PST8PDT';
.sp
.fi
.PP
時間帯をイタリアに設定します。
.sp
.nf
SET TIME ZONE 'Europe/Rome';
.sp
.fi
.SH "互換性"
.PP
SET TIME ZONEは標準SQLで定義された構文を拡張したものです。
標準では数値による時間帯オフセットしか使用できないのに対し、PostgreSQLでは、より柔軟に時間帯を指定することができます。
SETが持つその他の機能は、全てPostgreSQLの拡張です。
.SH "関連項目"
RESET [\fBreset\fR(l)], SHOW [\fBshow\fR(l)]
