BEGIN

名前

BEGIN -- トランザクションブロックの開始

概要

BEGIN [ WORK | TRANSACTION ]

説明

BEGIN はトランザクションブロックを初期化します。 つまり、BEGINコマンドの後の文は全て、明示的な COMMIT または ROLLBACK が与えられるまで、単一のトランザクションの中で実行されます。 デフォルト(BEGIN無し)では、PostgreSQL はトランザクションを "自動コミット" で実行します。 言い換えると、各文はそれ固有のトランザクションの中で実行され、コミットはその文の終わりに暗黙的に実行されます(実行が成功した場合です。 そうでない場合はロールバックされます)。

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

パラメータ

WORK
TRANSACTION

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

注釈

START TRANSACTION には、BEGIN と同じような機能があります。

トランザクションを終了させるには COMMITROLLBACK を使用して 下さい。

トランザクションブロック内でBEGIN を発行すると、警告メッセージが現われます。 トランザクションの状態には影響ありません。

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

BEGIN;

互換性

BEGINPostgreSQL の言語拡張です。 標準 SQL には明示的な BEGIN コマンドはありません。 トランザクションの開始は常に暗黙的で、COMMIT または ROLLBACK 文で終了します。

利便性のために、多くのリレーショナルデータベースシステムは、自動コミット機能を提供しています。

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

関連項目

COMMIT, ROLLBACK