# SET TRANSACTION

The `SET TRANSACTION` statement sets the transaction priority after you `BEGIN` it but before executing the first statement that manipulates a database.

## Synopsis

## Required privileges

No privileges are required to set the transaction priority. However, privileges are required for each statement within a transaction.

## Parameters

Parameter | Description
--- | ---
`PRIORITY` | If you do not want the transaction to run with `NORMAL` priority, you can set it to `LOW` or `HIGH`. Transactions with higher priority are less likely to need to be retried. For more information, see Transactions: Priorities. The current priority is also exposed as the session variable `transaction_priority`. Default: `NORMAL`
`READ` | Set the transaction access mode to `READ ONLY` or `READ WRITE`. The current transaction access mode is also exposed as the session variable `transaction_read_only`. Default: `READ WRITE`

New in v2.1: CockroachDB now only supports `SERIALIZABLE` isolation, so transactions can no longer be meaningfully set to any other `ISOLATION LEVEL`. In previous versions of CockroachDB, you could set transactions to `SNAPSHOT` isolation, but that feature has been removed.

## Examples

### Set priority

Warning:
This example assumes you're using client-side intervention to handle transaction retries.

    > BEGIN;

    > SET TRANSACTION PRIORITY HIGH;

    > SAVEPOINT cockroach_restart;

    > UPDATE products SET inventory = 0 WHERE sku = '8675309';

    > INSERT INTO orders (customer, sku, status) VALUES (1001, '8675309', 'new');

    > RELEASE SAVEPOINT cockroach_restart;

    > COMMIT;

## See also

- `SET`
- Transactions: Priority levels
- `BEGIN`
- `COMMIT`
- `SAVEPOINT`
- `RELEASE SAVEPOINT`
- `ROLLBACK`