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