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 [commit(7)] or ROLLBACK [rollback(l)] 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 or read/write mode is specified, the new
transaction has those characteristics, as if SET TRANSACTION
[set_transaction(7)] was executed.

PARAMETERS

WORKTRANSACTION
Optional key words. They have no effect.
Refer to SET TRANSACTION [set_transaction(7)] for information on the
meaning of the other parameters to this statement.

NOTES

START TRANSACTION [start_transaction(7)] has the same functionality as
BEGIN.
Use COMMIT [commit(7)] or ROLLBACK [rollback(7)] 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
[savepoint(7)]).
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 [start_transaction(7)], whose
reference page contains additional compatibility information.
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.