.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "SET CONSTRAINTS" "" "2004-06-19" "SQL - 言語" "SQL コマンド"
.SH NAME
SET CONSTRAINTS \- 現在のトランザクションの制約モードの設定

.SH SYNOPSIS
.sp
.nf
SET CONSTRAINTS { ALL | \fIname\fR [, ...] } { DEFERRED | IMMEDIATE }
.sp
.fi
.SH "説明"
.PP
\fBSET CONSTRAINTS\fRは、現在のトランザクションにおける制約の評価方法を設定します。
\fBIMMEDIATE\fR モードでは、一つの文の実行が終わる毎に制約がチェックされます。
\fBDEFERRED\fR モードでは、トランザクションが終了するまで制約はチェックされません。
.PP
制約のモードを IMMEDIATE に変更した場合は、新しい制約モードが遡及的に有効になります。 
つまり (DEFERRED を使用している場合には） トランザクションの終了時にチェックされることになる未チェックのデータ変更が、代わりに \fBSET CONSTRAINTS\fR コマンドの実行中にチェックされます。
.PP
制約はその生成時において、常にINITIALLY DEFERRED、INITIALLY IMMEDIATE DEFERRABLE、INITIALLY IMMEDIATE NOT DEFERRABLEの三つのうちのいずれかの特性を持ちます。
三番目のものは、\fBSET CONSTRAINTS\fRコマンドで有効になりません。
.PP
今のところ、外部キーの制約だけがこの設定の影響を受けます。
CHECK 制約や UNIQUE 制約は、常に初期状態で直接評価され、遅延されません。
.SH "注釈"
.PP
このコマンドは、現在のトランザクション内のみの制約の動作に影響します。
したがって、トランザクションブロック(\fBBEGIN\fR/\fBCOMMIT\fR の間)の外部でこのコマンドを実行した場合、全く影響を与えません。
トランザクション毎に \fBSET CONSTRAINTS\fR コマンドの実行をすることなく、制約の動作を変更したい場合は、制約を生成する時にINITIALLY DEFERRED あるいは INITIALLY IMMEDIATEを指定してください。
.SH "互換性"
.PP
このコマンドは、標準SQLで定義された動作に準拠しています。
ただし、PostgreSQLでは外部キー制約にのみ適用できるという制限があります。
