drop table if exists t1; create table t1(a int primary key, b int, c int, unique(b)) engine = ndb; insert into t1 values (2,2,2); insert into t1 values (3,3,3); insert into t1 values (4,4,4); begin; insert into t1 values (1,1,1); begin; update t1 set c = 2 where b = 1; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; rollback; drop table t1; create table t1(a int primary key, b int, c int, key(b)) engine = ndb; insert into t1 values (2,2,2); insert into t1 values (3,3,3); insert into t1 values (4,4,4); begin; insert into t1 values (1,1,1); begin; update t1 set c = 2 where b = 1; ERROR HY000: Lock wait timeout exceeded; try restarting transaction rollback; rollback; drop table t1; --con1 create table t1(a int primary key, b int, c int, key(b)) engine = ndb; insert into t1 values (1,1,1); insert into t1 values (2,2,2); insert into t1 values (3,3,3); insert into t1 values (4,4,4); begin; update t1 set c = 10 where a = 1; update t1 set c = 20 where a = 1; update t1 set c = 30 where a = 1; --con1 c=30 select * from t1 where b >= 1 order by b; a b c 1 1 30 2 2 2 3 3 3 4 4 4 --con2 c=1 select * from t1 where b >= 1 order by b; a b c 1 1 1 2 2 2 3 3 3 4 4 4 --con1 delete from t1 where a = 1; --con1 c=none select * from t1 where b >= 1 order by b; a b c 2 2 2 3 3 3 4 4 4 --con2 c=1 select * from t1 where b >= 1 order by b; a b c 1 1 1 2 2 2 3 3 3 4 4 4 --con1 commit; --con1 c=none select * from t1 where b >= 1 order by b; a b c 2 2 2 3 3 3 4 4 4 --con2 c=none select * from t1 where b >= 1 order by b; a b c 2 2 2 3 3 3 4 4 4 --con1 begin; insert into t1 values (1,1,1); update t1 set c = 10 where a = 1; update t1 set c = 20 where a = 1; update t1 set c = 30 where a = 1; --con1 c=30 select * from t1 where b >= 1 order by b; a b c 1 1 30 2 2 2 3 3 3 4 4 4 --con2 c=none select * from t1 where b >= 1 order by b; a b c 2 2 2 3 3 3 4 4 4 drop table t1;