1-- Transaction A (transfer money out)
2BEGIN;
3UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- locks row 1
4UPDATE accounts SET balance = balance + 100 WHERE id = 2; -- waits for row 2
5COMMIT;
6
7-- Transaction B (transfer money out, runs concurrently)
8BEGIN;
9UPDATE accounts SET balance = balance - 50 WHERE id = 2; -- locks row 2
10UPDATE accounts SET balance = balance + 50 WHERE id = 1; -- waits for row 1
11COMMIT;
12-- Deadlock: A holds 1 waiting for 2, B holds 2 waiting for 1
no lines flagged
#024PracticeHard30 min · 200 XP
Deadlock from Inconsistent Lock Order
Two concurrent transactions occasionally deadlock because they acquire locks in opposite order. Find the architectural fault.
Flagged linesNo lines flagged yet
What's wrong?
Flag a line or write a note to submit.