PostgreSQL 7.4.11 Documentation
Prev | Fast Backward |  | Fast Forward | Next

# BEGIN

## Name

BEGIN -- start a transaction block

## Synopsis

    BEGIN [ WORK | TRANSACTION ]

## Description

`BEGIN` initiates a transaction block, that is, all statements after `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.

## Parameters

`WORK`
`TRANSACTION`

  Optional key words. They have no effect.

## 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.

## 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.

## See Also

COMMIT, ROLLBACK

Prev | Home | Next
ANALYZE | Up | CHECKPOINT