START TRANSACTION

START TRANSACTION

7

SQL - Language Statements

START TRANSACTION

start a transaction block

START 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
===========

This command begins a new transaction block. If the isolation level,
read/write mode, or deferrable mode is specified, the new transaction
has those characteristics, as if
[`SET TRANSACTION`](#sql-set-transaction) was executed. This is the same
as the [`BEGIN`](#sql-begin) command.

Parameters
==========

Refer to [???](#sql-set-transaction) for information on the meaning of
the parameters to this statement.

Compatibility
=============

In the standard, it is not necessary to issue `START TRANSACTION` to
start a transaction block: any SQL command implicitly begins a block.
PostgreSQL\'s behavior can be seen as implicitly issuing a `COMMIT`
after each command that does not follow `START TRANSACTION` (or
`BEGIN`), and it is therefore often called "autocommit". Other
relational database systems might offer an autocommit feature as a
convenience.

The `DEFERRABLE` transaction\_mode is a PostgreSQL language extension.

The SQL standard requires commas between successive transaction\_modes,
but for historical reasons PostgreSQL allows the commas to be omitted.

See also the compatibility section of [???](#sql-set-transaction).

See Also
========
