.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "SET TRANSACTION" "" "2000-11-24" "SQL - 言語" "SQL コマンド"
.SH NAME
SET TRANSACTION \- 現在のトランザクションの特性の設定
.SH SYNOPSIS
.sp
.nf
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
    { READ COMMITTED | SERIALIZABLE }
  
.sp
.fi
.SH "説明"
.PP
このコマンドはトランザクションの隔離レベルを設定します。\fBSET TRANSACTION\fR コマンドは現在の SQL-トランザクションの振る舞いを設定します。 これはどんな後のトランザクションにも影響をおよぼしません．このコマンドはトランザクションで最初の問い合わせ文、または、DML文 (\fBSELECT\fR, \fBINSERT\fR, \fBDELETE\fR, \fBUPDATE\fR, \fBFETCH\fR, \fBCOPY\fR) が実行された後には使うことはできません。\fBSET SESSION CHARACTERISTICS\fRはそれぞれのセッションのトランザクションのデフォルトのトランザクションの隔離レベルを設定します。\fBSET TRANSACTION\fRで個々のトランザクションの隔離レベルを変更することができます。
.PP
トランザクションの隔離レベルは他のトランザクションが並行して実行している時、トランザクションがどんなデータを見ることができるかを決定するものです。
.TP
\fBREAD COMMITTED\fR
一つの文はそれが開始される前にコミットされた行のみ見ることができます。これがデフォルトです。
.TP
\fBSERIALIZABLE\fR
現在のトランザクションはこのトランザクションで最初の問い合わせ文または DML 文が実行される前にコミットされた行だけを見ることができます。
.sp
.RS
.B "Tip:"
直感的に言うと、シリアライザブルでは、二つの同時に実行されたトランザクションが作り出したデータベースの状態が、あたかもそれぞれが順に実行した場合と同じになるようになります。
.RE
.sp
.PP
.SH "注釈"
.PP
セッションのデフォルトのトランザクション隔離レベルは、次のコマンド:
.sp
.nf
SET default_transaction_isolation = '\fIvalue\fR'
.sp
.fi
および設定ファイル内で設定できます。より詳細については、\fI管理者用ガイド\fRを参照して下さい。
.SH "互換性"
.SS "SQL92, SQL99"
.PP
\fBSERIALIZABLE\fR は SQL における標準のレベルです。PostgreSQL は \fBREAD UNCOMMITTED\fR と \fBREPEATABLE READ\fR という隔離レベルを提供していません。 MVCC (多版型同時実行制御) があるので、\fBSERIALIZABLE\fR レベルは厳密にはシリアライザブルではありません。詳細は\fIユーザガイド\fRを参照してください。
.PP
SQL ではこれらのコマンドでセットすることができる他の二つのトランザクションの特性があります。トランザクションが読み取り専用であるかどうかということと診断領域のサイズです 。これらの概念は PostgreSQL ではサポートされていません。 
