SET TRANSACTION sets the transaction priority, access mode, “as of” timestamp, and isolation level. These are applied after you the transaction and before executing the first statement that manipulates a database.
Cockroach Labs recommends leaving the transaction priority at the default setting in almost all cases. Changing the transaction priority to HIGH in particular can lead to difficult-to-debug interactions with other transactions executing on the system.
If you are setting a transaction priority to avoid or , or to , it is usually a sign that you need to update your and/or review the data access patterns of your workload.
Synopsis
Required privileges
No 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 . The current priority is also exposed as the read-only 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 transaction\_read\_only. Default: READ WRITE |
AS OF SYSTEM TIME | Execute the transaction using the database contents “as of” a specified time in the past. The AS OF SYSTEM TIME clause can be used only when the transaction is read-only. If the transaction contains any writes, or if the READ WRITE mode is specified, an error will be returned. For more information, see . |
NOT DEFERRABLE DEFERRABLE | This clause is supported for compatibility with PostgreSQL. NOT DEFERRABLE is a no-op and the default behavior for CockroachDB. DEFERRABLE returns an unimplemented error. |
ISOLATION LEVEL | Set the transaction isolation level. Transactions use SERIALIZABLE isolation by default. They can be configured to run at isolation. This clause only takes effect if specified at the beginning of the transaction. |
Examples
Set isolation level
You can set the transaction isolation level to or . If not specified, transactions use the value of the current session’s variable.Set priority
This example assumes you’re using .
Use the AS OF SYSTEM TIME option
You can execute the transaction using the database contents “as of” a specified time in the past.
Set the default transaction priority for a session
To set the default transaction priority for all transactions in a session, use thedefault_transaction_priority . For example:
transaction_priority is a read-only that cannot be set directly.

