Isolation Levels: Functions
Module: Data Modification & Transactions
Setting Isolation Level Syntax:
PostgreSQL:
-- Session level (affects all transactions in session)
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- Transaction level (affects only current transaction)
BEGIN;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- queries
COMMIT;
-- Or set at BEGIN
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- queries
COMMIT;
MySQL:
-- Session level
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- Global level (affects all new sessions)
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- Transaction level
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION;
-- queries
COMMIT;
SQL Server:
-- Session level
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- Transaction level
BEGIN TRANSACTION;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- queries
COMMIT;
-- Or use table hints (query level)
SELECT * FROM accounts WITH (READUNCOMMITTED);
SELECT * FROM accounts WITH (REPEATABLEREAD);
SELECT * FROM accounts WITH (SERIALIZABLE);
Oracle:
-- Transaction level (Oracle has only two isolation levels)
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; -- Default
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- Or use FOR UPDATE (row-level locking)