現在のトランザクションの特性を設定します。

構文

SET TRANSACTION transaction_mode

Transaction_mode は次のオプションのいずれかになります。

  ISOLATION LEVEL { SERIALIZABLE | READ COMMITTED }
  READ WRITE | READ ONLY

説明

SET TRANSACTION コマンドは、現在のトランザクションの特性を設定します。 このコマンドは、後続のトランザクションには無効です。 使用可能なトランザクション特性は、トランザクション分離レベルとトランザクションアクセスモード (読み取り/書き込み、または読み取り専用) です。 トランザクションの分離レベルによって、他のトランザクションが同時に実行されているときにトランザクションが読み取ることができるデータが決まります。

  • READ COMMITTED

    この文では、文の開始前にコミットされた行のみを読み取ることができます。 これがデフォルト値です。

  • SERIALIZABLE

    現在のトランザクションのすべての文は、最初のクエリの前、またはこのトランザクションでデータ変更文が実行される前にコミットされた行のみを読み取ることができます。

最初のクエリまたはデータ変更文 (SELECTINSERTDELETEUPDATEFETCH) が実行された後では、トランザクション分離レベルの変更は不可能です。 トランザクションアクセスモードは、トランザクションが読み取り/書き込み、または読み取り専用かを判断します。 デフォルト値は、読み取り/書き込みです。

次の SQL コマンド、CREATEALTERDROPCOMMENTGRANTREVOKETRUNCATE は、読み取り専用トランザクションのサポート対象外です。 書き込むテーブルが一時テーブルではない場合、 INSERTUPDATEDELETE コマンドは、読み取り専用トランザクションのサポート対象外です。 リストに入っているコマンドのいずれかがトランザクション内で実行された場合、EXECUTE コマンドは読み取り専用トランザクションのサポート対象外です。 これは高度な読み取り専用モードであり、ディスク上のすべての書き込み操作をブロックするわけではありません。