SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
このコマンドはトランザクションの隔離レベルを設定します。 SET TRANSACTION コマンドは現在の SQL-トランザク ション の振る舞いを設定します。これはどんな後のトランザクションにも 影響をおよぼしません.このコマンドはトランザクションで最初のDML文 (SELECT, INSERT, DELETE, UPDATE, FETCH, COPY) が実行された後に は使うことはできません。SET SESSION CHARACTERISTICSはそれぞれのセッションのトランザクションの デフォルトのトランザクションの隔離レベルを設定します。SET TRANSACTIONで個々のトランザクションの隔離レベルを変更する ことができます。
トランザクションの隔離レベルは他のトランザクションが並行して実行し ている時、トランザクションがどんなデータを見ることができるかを決定 するものです。
一つの文はそれが開始される前にコミットされた行のみ見ることができ ます。これがデフォルトです。
現在のトランザクションはこのトランザクションで最初の DML文が実 行される前にコミットされた行だけを見ることができます。
Tip: 直感的に言うと、シリアライザブルでは、二つの同時に実行された トランザクションが作り出したデータベースの状態が、あたかもそれ ぞれが順に実行した場合と同じになるようになります。
SERIALIZABLE はSQLにおける標準のレベルです。 PostgresはREAD UNCOMMITTED と REPEATABLE READ という隔離レベルを提供していませ ん。それは MVCC(多版型同時実行制御)があるので、 シリアライザブルレベルは厳密にはシリアライザブルではありません。 詳細はユーザガイドを参照してください。
SQLではこれらのコマンドでセットすることができる 他の二つのトランザクションの特性があります。トランザクションが読み 取り専用であるかどうかということと診断領域のサイズです 。これらの 概念は Postgres ではサポートされていません。