BEGIN
SQL - Language Statements
BEGIN
start a transaction block
BEGIN
BEGIN [ WORK | TRANSACTION ]
Description
By default, 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).
BEGIN initiates a transaction block, that is,
all statements after BEGIN command will be
executed in a single transaction until an explicit or . 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 changing several related
tables: other sessions will be unable to see the intermediate states
wherein not all the related updates have been done.
Parameters
WORK
TRANSACTION
Optional key words. They have no effect.
Diagnostics
BEGIN
This signifies that a new transaction has been started.
WARNING: BEGIN: already a transaction in progress
This indicates that a transaction was already in progress. The
current transaction is not affected.
Notes
has the same functionality
as BEGIN>.
Use or
to terminate a transaction.
Examples
To begin a transaction block:
BEGIN;
Compatibility
BEGIN is a PostgreSQL
language extension. There is no explicit BEGIN
command in the SQL standard; transaction initiation is
always implicit and it terminates either with a
COMMIT or ROLLBACK statement.
Other relational database systems may offer an autocommit feature
as a convenience.
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.