Write Skew
The most subtle anomaly — possible even at REPEATABLE READ:
BEGIN;
SELECT count(*) FROM oncall WHERE shift_date = today;
UPDATE oncall SET doctor_id = NULL WHERE doctor_id = 'alice';
COMMIT;
BEGIN;
SELECT count(*) FROM oncall WHERE shift_date = today;
UPDATE oncall SET doctor_id = NULL WHERE doctor_id = 'bob';
COMMIT;
Fix: use SELECT FOR UPDATE or SERIALIZABLE isolation.