現在のトランザクションの特性を設定します。
構文
SET TRANSACTION transaction_mode
Transaction_mode
は次のオプションのいずれかになります。
ISOLATION LEVEL { SERIALIZABLE | READ COMMITTED }
READ WRITE | READ ONLY
説明
SET TRANSACTION
コマンドは、現在のトランザクションの特性を設定します。 このコマンドは、後続のトランザクションには無効です。 使用可能なトランザクション特性は、トランザクション分離レベルとトランザクションアクセスモード
(読み取り/書き込み、または読み取り専用) です。 トランザクションの分離レベルによって、他のトランザクションが同時に実行されているときにトランザクションが読み取ることができるデータが決まります。
READ COMMITTED
この文では、文の開始前にコミットされた行のみを読み取ることができます。 これがデフォルト値です。
SERIALIZABLE
現在のトランザクションのすべての文は、最初のクエリの前、またはこのトランザクションでデータ変更文が実行される前にコミットされた行のみを読み取ることができます。
最初のクエリまたはデータ変更文 (SELECT
、 INSERT
、 DELETE
、 UPDATE
、FETCH
) が実行された後では、トランザクション分離レベルの変更は不可能です。 トランザクションアクセスモードは、トランザクションが読み取り/書き込み、または読み取り専用かを判断します。
デフォルト値は、読み取り/書き込みです。
次の SQL コマンド、CREATE
、 ALTER
、 DROP
、 COMMENT
、 GRANT
、 REVOKE
、TRUNCATE
は、読み取り専用トランザクションのサポート対象外です。 書き込むテーブルが一時テーブルではない場合、 INSERT
、 UPDATE
、DELETE
コマンドは、読み取り専用トランザクションのサポート対象外です。 リストに入っているコマンドのいずれかがトランザクション内で実行された場合、EXECUTE
コマンドは読み取り専用トランザクションのサポート対象外です。 これは高度な読み取り専用モードであり、ディスク上のすべての書き込み操作をブロックするわけではありません。