BEGIN() SQL Commands BEGIN()
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
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(l)] or ROLLBACK [rollback(l)] is given. By default (without BEGIN), PostgreSQL executes transactions in ``autocom- mit'' 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 trans- action has those characteristics, as if SET TRANSACTION [set_transac- tion(l)] was executed.
PARAMETERS
WORK TRANSACTION Optional key words. They have no effect. Refer to SET TRANSACTION [set_transaction(l)] for information on the meaning of the other parameters to this statement.
NOTES
START TRANSACTION [start_transaction(l)] has the same functionality as BEGIN. Use COMMIT [commit(l)] or ROLLBACK [rollback(l)] to terminate a trans- action 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(l)]). 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(l)], whose refer- ence 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.
SEE ALSO
COMMIT [commit(l)], ROLLBACK [rollback(l)], START TRANSACTION [start_transaction(l)], SAVEPOINT [savepoint(l)] SQL - Language Statements 2008-09-19 BEGIN()
postgresql 8.3.4 - Generated Thu Oct 2 08:35:42 CDT 2008