Description
Use the SET TRANSACTION command to set the transaction isolation level for the current transaction. This change will affect only the current transaction; all other subsequent transactions must have their isolation mode explicitly set, otherwise the default of READ COMMITTED will be used.
You can only use this command before the first
DML
statement has been executed. A DML statement is one of SELECT, INSERT, DELETE, UPDATE, FETCH, or COPY.
To set the default transaction isolation level (as opposed to individual transaction), use SET SESSION CHARACTERISTICS and specify either READ COMMITTED or SERIALIZABLE. Issuing a SET TRANSACTION command from within a transaction can override this default setting.
When the isolation level is set to READ COMMITTED, all statements within the transaction view only the rows that were committed before the transaction was started. Setting the isolation level to SERIALIZABLE allows statements within the transaction to view changes made to the database before the first DML statement was executed within the transaction.
Examples
The following example sets the transaction isolation level to SERIALIZABLE for the current transaction:
testdb=#
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET VARIABLE
The next example demonstrates setting the default transaction isolation level for the current session:
testdb=#
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET VARIABLE