TRANSACTIONは、二相コミット用に現在のトランザクションを準備します。このコマンドの後、トランザクションは現在のセッションと関連しなくなります。トランザクションの状態は完全にディスク上に保存され、コミット要求前にデータベースがクラッシュしてしまったとしても、ほぼ確実に正常にコミットできるようになります。PREPAREDによりロールバックすることができます。元のトランザクションを実行したセッションだけではなく、任意のトランザクションからこれらのコマンドを発行することができます。TRANSACTIONはROLLBACKコマンドと似たような動作をします。実行した後、実行中の現在のトランザクションはなくなり、準備したトランザクションの効果は不可視になります。(そのトランザクションがコミットされた場合に効果が可視になります。TRANSACTIONコマンドが失敗した場合、ROLLBACKが行われます。現在のトランザクションが取り消されます。PREPAREDでトランザクションを識別するための任意の識別子です。この識別子は文字列リテラルでなければなりません。200バイト未満でなければなりません。その時点で準備されたトランザクションとして使用されている他の識別子と同じものは使用できません。TRANSACTIONはアプリケーションや対話式のセッションでの使用を目的としていません。この目的は、外部トランザクションマネージャにより、複数のデータベースやその他のトランザクションを持つリソースを跨るグローバルなトランザクションを原子的に実現できるようにすることです。TRANSACTIONを使用するべきではありません。このコマンドはトランザクションブロック内で使用しなければなりません。トランザクションブロックを始めるには、BEGINを使用してください。HOLDで作成したトランザクション、LISTENまたはUNLISTENを実行したトランザクションをPREPAREさせることはできません。準備したトランザクションで便利に使用するには、これらの機能は現在のセッションにあまりに強く結びついているためです。TRANSACTIONの後も残ります。PREPAREDの影響を受けません。ROLLBACKよりCOMMITと似た動きであるといえます。その時点で利用できるすべての準備されたトランザクションはpg_prepared_xactsシステムビューで列挙されます。注意トランザクションを長期間準備された状態のままとすることは勧められません。トランザクションIDの周回エラーの防止参照)を回避するためにデータベースを停止させてしまいます。トランザクションが保持しているすべてのロックを保持し続けていることにも注意してください。この昨日の想定している使用方法は、外部トランザクションマネージャが他のデータベースがコミットの準備をしたと検証した後すぐに、準備されたトランザクションは通常コミットまたはロールバックされることです。準備されたトランザクションを追跡し、それを即座に終了できるように外部トランザクションマネージャを設定していない場合、max_prepared_transactionsをゼロに設定して準備されたトランザクション機能を無効にしておくことが最善です。すれば事故により準備されたトランザクションが作成され、それが忘れられて問題を引き起こすことを防止できます。二相コミット用に現在のトランザクションを準備します。トランザクション識別子としてfoobarを使用します。TRANSACTIONはPostgreSQLの拡張です。これは外部のトランザクション管理システムによる利用を意図したものです。XAなど)は標準化されていますが、こうしたシステムのSQL側は標準化されていません。