1) ON MASTER: DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` (`id1` INT NOT NULL,`id2` INT NOT NULL,UNIQUE KEY (`id1`,`id2`)) ENGINE=InnoDB; INSERT INTO `t1`(`id1`,`id2`) VALUES (1,2),(2,3),(3,4),(4,5); 2) ON SLAVE: BEGIN; SELECT * FROM `t1` WHERE `id1`=1 FOR UPDATE; 3) ON MASTER: BEGIN; INSERT INTO `t1` VALUES (5,6); UPDATE `t1` SET `id1`=999 WHERE `id1`=1; COMMIT; //now wait for innodb lock wait timeout to expire...and check slaves logs. 060719 17:43:24 [Note] Slave I/O thread: connected to master 'root@127.0.0.1:3307', replication started in log 'FIRST' at position 4 060719 17:44:44 [ERROR] Slave: Error 'Lock wait timeout exceeded; try restarting transaction' on query. Default database: 'db10616'. Query: 'UPDATE `t1` SET `id1`=999 WHERE `id1`=1', Error_code: 1205 060719 17:44:44 [ERROR] Slave: Error 'Duplicate entry '5-6' for key 1' on query. Default database: 'db10616'. Query: 'INSERT INTO `t1`VALUES (5,6)', Error_code: 1062 060719 17:44:44 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'aserver-bin.000001' position 375