デフォルトでは、Postgres は トランザクションを非連鎖モード (他のデータベースシステムでは"自動コミット" としても知られています) で実行します。 別の言葉で言えば、それぞれのユーザの文はそれ固有のトランザクション の中で実行され、コミットはその文の終わりに暗黙的に実行されます (実行が成功した場合であり、そうでない場合はロールバックされます)。 BEGIN はユーザのトランザクションを連鎖モードで 開始します。すなわち、BEGIN コマンド以降の 全てのユーザの文は、明示的なCOMMIT、ROLLBACK もしくは実行の アボートまでの単一のトランザクションにおいて実行されます。連鎖 モードにおける文はとても迅速に実行されます。なぜなら トランザクションの開始/コミットはとても大きなCPUとディスクの 活動を必要とするからです。トランザクション中の複数の文の 実行はまた、複数の関連する表を更新する時には一貫性が要求されます。
Postgres におけるデフォルトの トランザクション隔離レベルは、 トランザクション内の問い合わせが問い合わせ実行前にコミット された変更のみが見えるREAD COMMITTED です。 したがって、もしもっと厳しいトランザクションの隔離を必要とする ならば、BEGIN のすぐ後に SET TRANSACTION ISOLATION LEVEL SERIALIZABLE を使わなければなりません。 SERIALIZABLE モードでは、問い合わせはトランザクションの全体が開始 される以前にコミットされた変更のみを参照します (実際には、直列可能なトランザクション中の最初のDML 文の実行以前)。
もしトランザクションがコミットされたら、 Postgres は全ての更新がなされるか、 もしくは更新の全てが無効になることを保証します。 トランザクションには、標準のACID 性 (atomic(原子性), consistent(一貫性), isolatable(独立性), durable(持続性)) があります。