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 |haREAD UNCOMMITTED と REPEATABLE READ という隔離レベルを提供していませ ん。それは MVCC(多版型同時実行制御) でシリアライザブルレベルは厳密 にはシリアライザブルではないからです。詳細はユーザガイ ドを参照してください。
SQLではこれらのコマンドでセットすることができる 他の2つのトランザクションの特性ががあります。トランザクションが読 み取り専用であるかどうかということと診断領域のサイズです 。これら の概念は Postgres ではサポートされていません。