Transaction Control in PostgreSQL

From the PostgreSQL Advanced Features cheat sheet ยท Transactions & Concurrency ยท verified Jul 2026

Transaction Control

Manage transactions and isolation levels

sql
-- Basic transaction
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

-- Rollback on error
BEGIN;
UPDATE products SET stock = stock - 1 WHERE id = 123;
-- Error occurs here
ROLLBACK;

-- Savepoints
BEGIN;
UPDATE users SET credits = 100;
SAVEPOINT before_risky;
DELETE FROM logs;  -- Risky operation
ROLLBACK TO before_risky;  -- Undo just the DELETE
COMMIT;

-- DETAILED_TAB:
-- Isolation levels
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;    -- Default
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

-- Advisory locks
SELECT pg_advisory_lock(12345);        -- Get lock
-- Do work
SELECT pg_advisory_unlock(12345);      -- Release

-- Row-level locking
SELECT * FROM orders
WHERE id = 123
FOR UPDATE;                            -- Lock for update

SELECT * FROM inventory
WHERE product_id = 456  
FOR SHARE;                             -- Shared lock
๐ŸŸข Essential - Ensure data consistency
๐Ÿ’ก Use transactions for related operations
โš ๏ธ Long transactions can cause blocking
๐Ÿ“Œ Savepoints allow partial rollback
๐Ÿ”— Related: pg_locks view for lock monitoring
transactionslocks

Continue with PostgreSQL Advanced Features

Save the full cheat sheet or work through every related task.

Back to the full PostgreSQL Advanced Features cheat sheet