START TRANSACTION — トランザクションブロックを開始する
START TRANSACTION [transaction_mode
[, ...] ]transaction_mode
には以下のいずれかが入ります。 ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE
このコマンドは新しいトランザクションブロックを開始します。 隔離レベルや読み取り/書き込みモード、遅延モードを指定すると、SET TRANSACTIONが実行された時のように、新しいトランザクションはそれらの特性を持ちます。 このコマンドの機能は、BEGINコマンドと同じです。
この文のパラメータの意味についてはSET TRANSACTIONを参照してください。
標準SQLでは、トランザクションブロック開始時のSTART TRANSACTION
コマンドの発行は必須ではありません。
任意のSQLコマンドが暗黙的にブロックを開始するからです。
PostgreSQLでは、START TRANSACTION
(もしくはBEGIN
)が実行されていない状態で発行されたコマンドは、その直後に、暗黙的なCOMMIT
が発行されたかのように動作します。
これは「自動コミット」と呼ばれます。
他のリレーショナルデータベースシステムの中にも、簡便性のために自動コミット機能を提供しているものもあります。
DEFERRABLE
transaction_mode
はPostgreSQLの言語拡張です。
標準SQLでは、連続するtransaction_modes
の間にはカンマが必須です。
しかし、PostgreSQLでは歴史的な理由によりカンマを省略することができます。
SET TRANSACTIONの互換性の節も参照してください。