START TRANSACTION

SQL - Language Statements

START TRANSACTION

start a transaction block

    START TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ]

1998-09-27

## Inputs

None.

1998-09-27

## Outputs

`START TRANSACTION`

- Message returned if successful.

`WARNING: BEGIN: already a transaction in progress`

- If there is already a transaction in progress when the command is issued.

## Description

This command begins a new transaction. If the isolation level is specified, the new transaction has that isolation level. In all other respects, the behavior of this command is identical to the sql-begin-title command.

## Notes

The isolation level of a transaction can also be set with the sql-set-transaction-title command. If no isolation level is specified, the default isolation level is used.

## Compatibility

### SQL99

`SERIALIZABLE` is the default isolation level in SQL99, but it is not the usual default in PostgreSQL: the factory default setting is READ COMMITTED. PostgreSQL does not provide the isolation levels `READ UNCOMMITTED` and `REPEATABLE READ`. Because of lack of predicate locking, the `SERIALIZABLE` level is not truly serializable. See the User's Guide for details.

In SQL99 this statement can specify two other properties of the new transaction: whether the transaction is read-only and the size of the diagnostics area. Neither of these concepts are currently supported in PostgreSQL.