Advertisement
Guest User

Deadlock

a guest
Aug 13th, 2013
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* A */ CREATE TABLE deadlock(
  2.           id INT UNSIGNED NOT NULL,
  3.           weight INT UNSIGNED NOT NULL,
  4.           PRIMARY KEY(id)
  5.         ) ENGINE=InnoDB;
  6.  
  7. /* A */ INSERT INTO deadlock (id, weight) VALUES (1, 0), (2, 0);
  8.  
  9. /* A */ SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
  10. /* B */ SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
  11.  
  12. /* A */ BEGIN;
  13. /* B */ BEGIN;
  14.  
  15. /* A */ UPDATE deadlock SET weight = 1 WHERE id = 1; /* OK */
  16. /* B */ UPDATE deadlock SET weight = 2 WHERE id = 2; /* OK */
  17.  
  18. /* A */ UPDATE deadlock SET weight = 1 WHERE id = 2; /* Locked (pending) */
  19. /* B */ UPDATE deadlock SET weight = 2 WHERE id = 1; /* Deadlock, B killed, A succeeds */
  20.  
  21. /* A */ COMMIT; /* OK */
  22. /* A */ COMMIT; /* OK (but does nothing) */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement