create table t1 ( pk int not null primary key, col1 int not null, col2 int not null, key(col1) ) engine=xengine; create table ten(a int primary key); insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); create table one_k(a int primary key); insert into one_k select A.a + B.a* 10 + C.a * 100 from ten A, ten B, ten C; insert into t1 select a,a,a from one_k; # Start the transaction, get the snapshot begin; select * from t1 where col1<10; pk col1 col2 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 # Connect with another connection and make a conflicting change begin; update t1 set col2=123456 where pk=0; commit; update t1 set col2=col2+1 where col1 < 10 limit 5; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction drop table t1, ten, one_k;