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
Flag a line or write a note to submit.