無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

BEGIN

名前

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

概要

BEGIN [ WORK | TRANSACTION ] [ 

transaction_mode

 [, ...] ]





transaction_mode

は以下のいずれかです。



    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY
    [ NOT ] DEFERRABLE

説明

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

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

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

パラメータ

WORK
TRANSACTION

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

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

注釈

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

トランザクションを終了させるには COMMIT または ROLLBACK を使用してください。

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

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

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

BEGIN;

互換性

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

DEFERRABLE transaction_mode PostgreSQL の言語拡張です。

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

関連項目

COMMIT , ROLLBACK , START TRANSACTION , SAVEPOINT

powered by SEO.CUG.NET