# BEGIN - man(7) - [phpMan]

[_BEGIN_(7)](https://www.chedong.com/phpMan.php/man/BEGIN/7/markdown)                           PostgreSQL 16.14 Documentation                           [_BEGIN_(7)](https://www.chedong.com/phpMan.php/man/BEGIN/7/markdown)

## NAME
       BEGIN - start a transaction block

## SYNOPSIS
       BEGIN [ WORK | TRANSACTION ] [ _transaction_mode_ [, ...] ]

       where _transaction_mode_ is one of:

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

## DESCRIPTION
       **BEGIN **initiates a transaction block, that is, all statements after a **BEGIN **command will be
       executed in a single transaction until an explicit **COMMIT **or **ROLLBACK **is given. By default
       (without **BEGIN**), PostgreSQL executes transactions in “autocommit” 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).

       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.

       If the isolation level, read/write mode, or deferrable mode is specified, the new transaction
       has those characteristics, as if **SET TRANSACTION **was executed.

## PARAMETERS
       WORK
       TRANSACTION
           Optional key words. They have no effect.

       Refer to SET TRANSACTION ([**SET_TRANSACTION**(7)](https://www.chedong.com/phpMan.php/man/SETTRANSACTION/7/markdown)) for information on the meaning of the other
       parameters to this statement.

## NOTES
       **START TRANSACTION **has the same functionality as **BEGIN**.

       Use **COMMIT **or **ROLLBACK **to terminate a transaction block.

       Issuing **BEGIN **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 [**SAVEPOINT**(7)](https://www.chedong.com/phpMan.php/man/SAVEPOINT/7/markdown)).

       For reasons of backwards compatibility, the commas between successive _transaction_modes_ can
       be omitted.

## EXAMPLES
       To begin a transaction block:

           BEGIN;

## COMPATIBILITY
       **BEGIN **is a PostgreSQL language extension. It is equivalent to the SQL-standard command **START**
       **TRANSACTION**, whose reference page contains additional compatibility information.

       The DEFERRABLE _transaction_mode_ is a PostgreSQL language extension.

       Incidentally, the BEGIN 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.

## SEE ALSO
       [**COMMIT**(7)](https://www.chedong.com/phpMan.php/man/COMMIT/7/markdown), [**ROLLBACK**(7)](https://www.chedong.com/phpMan.php/man/ROLLBACK/7/markdown), START TRANSACTION ([**START_TRANSACTION**(7)](https://www.chedong.com/phpMan.php/man/STARTTRANSACTION/7/markdown)), [**SAVEPOINT**(7)](https://www.chedong.com/phpMan.php/man/SAVEPOINT/7/markdown)

PostgreSQL 16.14                                2026                                        [_BEGIN_(7)](https://www.chedong.com/phpMan.php/man/BEGIN/7/markdown)
