BEGIN(7)
β¨ NAME β¨
BEGIN β start a transaction block. okay bestie, welcome to BEGIN(7) from the PostgreSQL 17.11 Documentation, and yes this is THE transaction-starting page π
πΈ 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 π¦
Okay so, 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. no cap, that's the whole vibe.
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). autocommit is lowkey doing the most, one statement at a time π«Ά
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. it's giving consistency when you've got several related changes π
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 π
WORKTRANSACTION
Both are optional key words, bestie β they have no effect. literally just vibes π
Refer to SET TRANSACTION (SET_TRANSACTION(7)) for information on the meaning of the other parameters to this statement.
π₯ NOTES π₯
START TRANSACTIONhas the same functionality asBEGIN. same energy, different spelling β¨- Use
COMMITorROLLBACKto terminate a transaction block. - Issuing
BEGINwhen 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 (seeSAVEPOINT(7)). so don't try to inception it without savepoints, bestie π - For reasons of backwards compatibility, the commas between successive
transaction_modescan 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. fr fr, porting girlies, pay attention to those transaction semantics β οΈ
π¦ SEE ALSO π¦
COMMIT(7)ROLLBACK(7)START TRANSACTION(START_TRANSACTION(7))SAVEPOINT(7)
k bye bestie β PostgreSQL 17.11, 2026 edition, stay transactional π
π¦ where this page comes from
- opensuse-leap 16.0: postgresql17 17.11-160000.1.1 Β· PostgreSQL
- opensuse-leap 16.0: postgresql17 17.11-160000.1.1 Β· PostgreSQL
- opensuse-leap 16.0: postgresql17 17.11-160000.1.1 Β· PostgreSQL
- opensuse-leap 16.0: postgresql17 17.11-160000.1.1 Β· PostgreSQL
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms