- Открываем два окна psql: session_1 и session_2;
- В session_1:
BEGIN;
UPDATE bank_accounts SET amount = amount - 100 WHERE id = 1;
- В session_2:
BEGIN;
UPDATE bank_accounts SET amount = amount + 100 WHERE id = 2;
- В session_1:
UPDATE bank_accounts SET amount = amount + 50 WHERE id = 2;
COMMIT;
- В session_2:
UPDATE bank_accounts SET amount = amount + 50 WHERE id = 1;
COMERROR: deadlock detected
DETAIL: Process 3225 waits for ShareLock on transaction 785; blocked by process 3002.
Process 3002 waits for ShareLock on transaction 786; blocked by process 3225.
HINT: See server log for query details.
CONTEXT: while updating tuple (0,5) in relation "bank_accounts"
ruslan=!# COMMIT;
ROLLBACK