Lab 07: Transactions & Isolation Levels
Step 1 — Setup: Bank Accounts
-- PostgreSQL
CREATE TABLE bank_accounts (
id SERIAL PRIMARY KEY,
owner VARCHAR(50),
balance NUMERIC(12,2) CHECK (balance >= 0)
);
INSERT INTO bank_accounts (owner, balance) VALUES
('Alice', 5000.00),
('Bob', 3000.00);
SELECT * FROM bank_accounts; id | owner | balance
----+-------+---------
1 | Alice | 5000.00
2 | Bob | 3000.00
(2 rows)Step 2 — Basic Transaction: COMMIT and ROLLBACK
Step 3 — Isolation Levels: Overview
Level
Dirty Read
Non-Repeatable Read
Phantom Read
Step 4 — READ COMMITTED (Default)
Step 5 — REPEATABLE READ
Step 6 — SERIALIZABLE Isolation
Step 7 — SELECT FOR UPDATE / SELECT FOR SHARE
Option
Blocks
Allows
Step 8 — Capstone: Optimistic vs Pessimistic Locking
Summary
Isolation Level
Default In
Prevents
Locking
Type
Use When
Last updated
