BEGIN(7)

πŸ“¦ version 16.15, in opensuse-leap 16.0

okay so bestie, this is the BEGIN(7) page from the PostgreSQL 16.15 docs, and it’s giving β€œtiny command, huge consequences.” πŸ’…

🌸 NAME 🌸

BEGIN β€” start a transaction block. periodt. πŸ‘‘

✨ 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 πŸ¦‹

So BEGIN initiates a transaction block. Translation: all statements after a BEGIN command will be executed in a single transaction until an explicit COMMIT or ROLLBACK is given. no cap. 🫢

By default β€” meaning without BEGIN β€” PostgreSQL executes transactions in β€œautocommit” mode. That means 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. bestie, it’s one and done. πŸ’€

Statements are executed more quickly in a transaction block, because transaction start/commit requires significant CPU and disk activity. slay for performance 🧚. 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. the vibe stays all-or-nothing. ✨

If the isolation level, read/write mode, or deferrable mode is specified, the new transaction has those characteristics, as if SET TRANSACTION was executed. keep that in mind. πŸ’…

πŸŽ€ PARAMETERS πŸŽ€

  • WORK β€” optional key word. It has no effect. literally decorative. πŸŽ€
  • TRANSACTION β€” optional key word. It has no effect. same energy. ✨
  • Refer to SET TRANSACTION (SET_TRANSACTION(7)) for information on the meaning of the other parameters to this statement. that’s the lore. πŸ’–

🌈 NOTES 🌈

  • START TRANSACTION has the same functionality as BEGIN. same slay, different name. 🫢
  • Use COMMIT or ROLLBACK to terminate a transaction block. do not leave it hanging, bestie. 😭
  • Issuing BEGIN when already inside a transaction block will provoke a warning message. The state of the transaction is not affected. so it’s loud, but not destructive. πŸ’€
  • To nest transactions within a transaction block, use savepoints β€” see SAVEPOINT(7). that’s the move. πŸŽ€
  • For reasons of backwards compatibility, the commas between successive transaction_modes can be omitted. cute. no notes. 😌

πŸ’– EXAMPLES πŸ’–

To begin a transaction block, you literally do:

BEGIN;

iconic. that’s it. πŸ¦‹

πŸ‘‘ COMPATIBILITY πŸ‘‘

  • BEGIN is a PostgreSQL language extension. It is equivalent to the SQL-standard command START TRANSACTION, whose reference page contains additional compatibility information. iykyk. πŸ’…
  • The DEFERRABLE transaction_mode is a PostgreSQL language extension. PostgreSQL stays extending ✨
  • 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. this is a friendly warning, not a drill. 🚨

🌟 SEE ALSO 🌟

go read these next, bestie. the cross-refs are iconic. πŸ’œ


πŸ’– that’s the whole BEGIN(7) page from the PostgreSQL 16.15 docs, dated 2026 β€” go forth and transact responsibly, bestie. 🫢

πŸ“¦ where this page comes from