バージョンごとのドキュメント一覧

BEGIN

BEGIN <refpurpose>start a transaction block</refpurpose> — トランザクションブロックを開始する

概要

BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]


<phrase>where <replaceable class="parameter">transaction_mode</replaceable> is one of:</phrase>

transaction_modeは以下のいずれかです。

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

説明

<title>Description</title>

<command>BEGIN</command> initiates a transaction block, that is, all statements after a <command>BEGIN</command> command will be executed in a single transaction until an explicit <link linkend="sql-commit"><command>COMMIT</command></link> or <link linkend="sql-rollback"><command>ROLLBACK</command></link> is given. By default (without <command>BEGIN</command>), <productname>PostgreSQL</productname> executes transactions in <quote>autocommit</quote> mode, that is, each statement is executed in its own transaction and a commit is implicitly performed at the end of the statement (if execution was successful, otherwise a rollback is done). BEGINはトランザクションブロックを初期化します。 BEGINコマンド以降の文は全て、明示的なCOMMITもしくはROLLBACKが与えられるまで、単一のトランザクションの中で実行されます。 デフォルト(BEGINがない場合)は、PostgreSQLはトランザクションを自動コミットで実行します。 つまり、各文はそれぞれ固有のトランザクションの中で実行され、文の終わりで暗黙的にコミットが実行されます(これは実行が成功した場合です。失敗した場合はロールバックされます)。

Statements are executed more quickly in a transaction block, because transaction start/commit requires significant CPU and disk activity. Execution of multiple statements inside a transaction is also useful to ensure consistency when making several related changes: other sessions will be unable to see the intermediate states wherein not all the related updates have been done. トランザクションブロック内では、文はより迅速に実行されます。 なぜなら、トランザクションの開始やコミットは、CPUとディスクにかなり高い負荷をかけるからです。 また、1つのトランザクションで複数の文を実行することは、複数の関連するテーブルを更新する際、確実に一貫性を保つためにも役立ちます。 関連する更新の中に完了していないものが存在する中間的な状態が、他のセッションから参照できなくなるからです。

If the isolation level, read/write mode, or deferrable mode is specified, the new transaction has those characteristics, as if <link linkend="sql-set-transaction"><command>SET TRANSACTION</command></link> was executed. 分離レベル、読み書きモード、または遅延モードが指定されている場合、新しいトランザクションは、SET TRANSACTIONが実行された時と同様の特性を持ちます。

パラメータ

<title>Parameters</title>
WORK
TRANSACTION

Optional key words. They have no effect. 省略可能なキーワードです。これらは何も効果がありません。

Refer to <xref linkend="sql-set-transaction"/> for information on the meaning of the other parameters to this statement. BEGIN文のこの他のパラメータについては、SET TRANSACTIONを参照してください。

注釈

<title>Notes</title>

<link linkend="sql-start-transaction"><command>START TRANSACTION</command></link> has the same functionality as <command>BEGIN</command>. START TRANSACTIONにはBEGINと同じ機能があります。

Use <link linkend="sql-commit"><command>COMMIT</command></link> or <link linkend="sql-rollback"><command>ROLLBACK</command></link> to terminate a transaction block. トランザクションを終了させるにはCOMMITまたはROLLBACKを使用してください。

Issuing <command>BEGIN</command> when already inside a transaction block will provoke a warning message. The state of the transaction is not affected. To nest transactions within a transaction block, use savepoints (see <xref linkend="sql-savepoint"/>). トランザクションブロック内でBEGINを発行すると、警告メッセージが表示されます。 ただし、トランザクションの状態には影響ありません。 トランザクションブロック内でトランザクションを入れ子にするには、セーブポイントを使用してください (詳しくはSAVEPOINTを参照してください)。

For reasons of backwards compatibility, the commas between successive <replaceable class="parameter">transaction_modes</replaceable> can be omitted. 後方互換性の保持のため、連続するtransaction_modes間のカンマは省略することができます。

<title>Examples</title>

To begin a transaction block: トランザクションブロックを開始します。

BEGIN;

互換性

<title>Compatibility</title>

<command>BEGIN</command> is a <productname>PostgreSQL</productname> language extension. It is equivalent to the SQL-standard command <link linkend="sql-start-transaction"><command>START TRANSACTION</command></link>, whose reference page contains additional compatibility information. BEGINPostgreSQLの拡張です。 標準SQLのSTART TRANSACTIONコマンドと等価です。 そのマニュアルページには互換性に関する詳細な情報が含まれます。

The <literal>DEFERRABLE</literal> <replaceable class="parameter">transaction_mode</replaceable> is a <productname>PostgreSQL</productname> language extension. DEFERRABLE transaction_modePostgreSQLの言語拡張です。

Incidentally, the <literal>BEGIN</literal> key word is used for a different purpose in embedded SQL. You are advised to be careful about the transaction semantics when porting database applications. 埋め込みSQLでは、BEGINというキーワードを異なった目的に使用しています。 データベースアプリケーションを移植する時は、トランザクションの意味で使用されているのかどうかに注意してください。

関連項目

<title>See Also</title> COMMIT, ROLLBACK, START TRANSACTION, SAVEPOINT