You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 lines
858 B

  1. CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB;
  2. INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
  3. COMMIT;
  4. SET AUTOCOMMIT = 0;
  5. CREATE TEMPORARY TABLE t1_tmp ( b INT );
  6. INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3;
  7. INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2;
  8. SET AUTOCOMMIT = 0;
  9. CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int );
  10. INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
  11. UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
  12. UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
  13. INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1;
  14. ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
  15. Reap the server message for connection user2 UPDATE t1 ...
  16. UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
  17. DROP TABLE t1;