.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "SET" "" "2005-01-19" "SQL - 言語" "SQL コマンド"
.SH NAME
SET \- 実行時パラメータの変更

.SH SYNOPSIS
.sp
.nf
SET [ SESSION | LOCAL ] \fIname\fR { TO | = } { \fIvalue\fR | '\fIvalue\fR' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { \fItimezone\fR | LOCAL | DEFAULT }
.sp
.fi
.SH "説明"
.PP
\fBSET\fRコマンドは実行時設定パラメータを変更します。
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\fIname\fB\fR
設定可能な実行時パラメータ名です。
利用可能なパラメータは、the documentationと以下に示されています。
.TP
\fB\fIvalue\fB\fR
パラメータの新しい値です。
値は、定数、識別子、数字、あるいは、これらをコンマで区切ったリストを文字列として指定することができます。
パラメータをデフォルト値に再設定するために\fBDEFAULT\fRを使うことができます。
.PP
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
時間帯に関する詳細はthe documentationを参照してください。
また、the documentationには認識可能な時間帯名の一覧があります。
.PP
.PP
.SH "注釈"
.PP
\fBset_config\fR関数は等価な機能を提供します。
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)]
