Bird
0
0

Why does this transaction fail under Serializable isolation?

medium📝 Debug Q7 of 15
PostgreSQL - Transactions and Concurrency

Why does this transaction fail under Serializable isolation?
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT balance FROM accounts WHERE id = 1;
UPDATE accounts SET balance = balance + 50 WHERE id = 1;
COMMIT;

Meanwhile, another transaction updated the same row and committed.

ADeadlock detected between transactions
BSyntax error in SET TRANSACTION command
CSerialization failure due to concurrent conflicting update
DThe SELECT statement causes a lock timeout
Step-by-Step Solution
Solution:
  1. Step 1: Understand Serializable Conflict Detection

    The first transaction reads and updates a row that another transaction modified concurrently, causing a conflict.
  2. Step 2: Identify Failure Reason

    PostgreSQL aborts one transaction with a serialization failure to maintain consistency.
  3. Final Answer:

    Serialization failure due to concurrent conflicting update -> Option C
  4. Quick Check:

    Concurrent update conflict = Serialization failure [OK]
Quick Trick: Concurrent conflicting updates cause serialization failures [OK]
Common Mistakes:
  • Confusing serialization failure with syntax error
  • Assuming deadlock instead of serialization failure
  • Thinking SELECT causes lock timeout

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More PostgreSQL Quizzes