DROP TABLE IF EXISTS t1, t2, t3, t4; CREATE TABLE t1 (id INTEGER) ENGINE=MYISAM; CREATE TABLE t2 (id INTEGER primary key) ENGINE=INNODB; CREATE TABLE t3 (a char(32) primary key,id INTEGER) ENGINE=INNODB; CREATE TABLE t4 (a char(32) primary key,id INTEGER) ENGINE=MYISAM; INSERT INTO t1 (id) VALUES (1); INSERT INTO t1 SELECT id+1 FROM t1; INSERT INTO t1 SELECT id+2 FROM t1; INSERT INTO t1 SELECT id+4 FROM t1; INSERT INTO t1 SELECT id+8 FROM t1; INSERT INTO t1 SELECT id+16 FROM t1; INSERT INTO t1 SELECT id+32 FROM t1; INSERT INTO t1 SELECT id+64 FROM t1; INSERT INTO t1 SELECT id+128 FROM t1; INSERT INTO t1 SELECT id+256 FROM t1; INSERT INTO t1 SELECT id+512 FROM t1; INSERT INTO t1 SELECT id+1024 FROM t1; INSERT INTO t1 SELECT id+2048 FROM t1; INSERT INTO t1 SELECT id+4096 FROM t1; INSERT INTO t1 SELECT id+8192 FROM t1; INSERT INTO t1 SELECT id+16384 FROM t1; INSERT INTO t1 SELECT id+32768 FROM t1; INSERT INTO t1 SELECT id+65536 FROM t1; INSERT INTO t1 SELECT id+131072 FROM t1; INSERT INTO t1 SELECT id+262144 FROM t1; INSERT INTO t1 SELECT id+524288 FROM t1; INSERT INTO t1 SELECT id+1048576 FROM t1; INSERT INTO t2 SELECT * FROM t1; INSERT INTO t3 SELECT concat(id),id from t2 ORDER BY -id; INSERT INTO t4 SELECT * from t3 ORDER BY concat(a); select sum(id) from t3; sum(id) 2199024304128 drop table t1,t2,t3,t4; CREATE TABLE t1 (f1 int NOT NULL) ENGINE=InnoDB; CREATE TABLE t2 (f2 int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; CREATE TRIGGER t1_bi before INSERT ON t1 FOR EACH ROW BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '40001' SET @a:= 'deadlock'; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception'; INSERT INTO t2 (f2) VALUES (1); DELETE FROM t2 WHERE f2 = 1; END;| CREATE PROCEDURE proc24989() BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '40001' SET @b:= 'deadlock'; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception'; INSERT INTO t2 (f2) VALUES (1); DELETE FROM t2 WHERE f2 = 1; END;| create procedure proc24989_2() deterministic begin declare continue handler for sqlexception select 'Outer handler' as 'exception'; insert into t1 values(1); select "continued"; end| start transaction; insert into t1 values(1); start transaction; insert into t2 values(123); insert into t1 values(1); insert into t1 values(1); ERROR 40001: Deadlock found when trying to get lock; try restarting transaction select @a; @a NULL select * from t2; f2 commit; start transaction; insert into t1 values(1); start transaction; insert into t2 values(123); call proc24989(); insert into t1 values(1); select @a,@b; @a @b exception deadlock select * from t2; f2 commit; start transaction; insert into t1 values(1); start transaction; insert into t2 values(123); call proc24989_2(); insert into t1 values(1); commit; exception Outer handler continued continued select * from t2; f2 drop procedure proc24989; drop procedure proc24989_2; drop table t1,t2;