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