include/master-slave.inc [connection master] DROP PROCEDURE IF EXISTS test.p1; DROP PROCEDURE IF EXISTS test.p2; DROP TABLE IF EXISTS test.t2; DROP TABLE IF EXISTS test.t1; DROP TABLE IF EXISTS test.t3; CREATE TABLE IF NOT EXISTS test.t1(id INT, data CHAR(16),PRIMARY KEY(id)); CREATE TABLE IF NOT EXISTS test.t2(id2 INT,PRIMARY KEY(id2)); CREATE TABLE IF NOT EXISTS test.t3(id3 INT,PRIMARY KEY(id3), c CHAR(16)); CREATE PROCEDURE test.p1() BEGIN DECLARE done INT DEFAULT 0; DECLARE spa CHAR(16); DECLARE spb,spc INT; DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1 ORDER BY id; DECLARE cur2 CURSOR FOR SELECT id2 FROM test.t2 ORDER BY id2; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur1; OPEN cur2; REPEAT FETCH cur1 INTO spb, spa; FETCH cur2 INTO spc; IF NOT done THEN IF spb < spc THEN INSERT INTO test.t3 VALUES (spb,spa); ELSE INSERT INTO test.t3 VALUES (spc,spa); END IF; END IF; UNTIL done END REPEAT; CLOSE cur1; CLOSE cur2; END| CREATE PROCEDURE test.p2() BEGIN INSERT INTO test.t1 VALUES (4,'MySQL'),(20,'ROCKS'),(11,'Texas'),(10,'kyle'); INSERT INTO test.t2 VALUES (4),(2),(1),(3); UPDATE test.t1 SET id=id+4 WHERE id=4; END| < ---- Master selects-- > ------------------------- CALL test.p2(); SELECT * FROM test.t1 ORDER BY id; id data 8 MySQL 10 kyle 11 Texas 20 ROCKS SELECT * FROM test.t2 ORDER BY id2; id2 1 2 3 4 < ---- Slave selects-- > ------------------------ SELECT * FROM test.t1 ORDER BY id; id data 8 MySQL 10 kyle 11 Texas 20 ROCKS SELECT * FROM test.t2 ORDER BY id2; id2 1 2 3 4 < ---- Master selects-- > ------------------------- CALL test.p1(); SELECT * FROM test.t3 ORDER BY id3; id3 c 1 MySQL 2 kyle 3 Texas 4 ROCKS < ---- Slave selects-- > ------------------------ SELECT * FROM test.t3 ORDER BY id3; id3 c 1 MySQL 2 kyle 3 Texas 4 ROCKS ALTER PROCEDURE test.p1 MODIFIES SQL DATA; DROP PROCEDURE IF EXISTS test.p1; DROP PROCEDURE IF EXISTS test.p2; DROP TABLE IF EXISTS test.t1; DROP TABLE IF EXISTS test.t2; DROP TABLE IF EXISTS test.t3; include/rpl_end.inc