BEGIN(7)

NAME
BEGIN - トランザクションブロックを開始する

SYNOPSIS

BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
transaction_modeは以下のいずれかです。
    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED |
    READ UNCOMMITTED }
    READ WRITE | READ ONLY

説明

BEGINはトランザクションブロックを初期化します。 BEGINコマンド以降の文は全て、明示的なCOMMIT [commit(7)]もしくはROLLBACK [rollback(7)]が与えられるまで、単一のトランザクションの中で実行されます。 デフォルト（BEGINがない場合）は、PostgreSQLはトランザクションを``自動コミット''で実行します。 つまり、各文はそれぞれ固有のトランザクションの中で実行され、文の終わりで暗黙的にコミットが実行されます（これは実行が成功した場合です。失敗した場合はロールバックされます）。

トランザクションブロック内では、文はより迅速に実行されます。 なぜなら、トランザクションの開始やコミットは、CPUとディスクにかなり高い負荷をかけるからです。 また、1つのトランザクションで複数の文を実行することは、複数の関連するテーブルを更新する際、確実に一貫性を保つためにも役立ちます。 関連する更新の中に完了していないものが存在する中間的な状態が、他のセッションから参照できなくなるからです。

隔離レベルもしくは読み書きモードが指定されている場合、新しいトランザクションは、SET TRANSACTION [set_transaction(7)]が実行された時と同様の特性を持ちます。

パラメータ

WORK

TRANSACTION
    省略可能なキーワードです。これらは何も効果がありません。

BEGIN文のこの他のパラメータについては、SET TRANSACTION [set_transaction(7)]を参照してください。

注釈

START TRANSACTION [start_transaction(7)]には、BEGINと同じ機能があります。

トランザクションを終了させるには、COMMIT [commit(7)]またはROLLBACK [rollback(7)]を使用してください。

トランザクションブロック内でBEGINを発行すると、警告メッセージが表示されます。 ただし、トランザクションの状態には影響ありません。 トランザクションブロック内でトランザクションを入れ子にするには、セーブポイントを使用してください （詳しくはSAVEPOINT [savepoint(7)]を参照してください）。

後方互換性の保持のため、連続するtransaction_modes間のカンマは省略することができます。

例

トランザクションブロックを開始します。

BEGIN;

互換性

BEGINはPostgreSQLの拡張です。 標準SQLのSTART TRANSACTION [start_transaction(7)]コマンドと等価です。 このマニュアルページには互換性に関する詳細な情報が含まれます。

埋め込みSQLでは、BEGINというキーワードを異なった目的に使用しています。 データベースアプリケーションを移植する時は、トランザクションの意味で使用されているのかどうかに注意してください。

関連項目
COMMIT [commit(7)], ROLLBACK [rollback(7)], START TRANSACTION [start_transaction(7)], SAVEPOINT [savepoint(7)]