CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, level VARCHAR(50),dt_sysdate DATETIME,dt_outer DATETIME, PRIMARY KEY (id)); DELIMITER $$ CREATE PROCEDURE example1 (p_date DATETIME) BEGIN -- non duplicates on first insert INSERT INTO t1 VALUES (-5,'example1', sysdate(),p_date); INSERT INTO t1 VALUES (-6,'example1', sysdate(),p_date); END ; $$ CREATE PROCEDURE example2 (p_date DATETIME) BEGIN -- duplicate on first insert INSERT INTO t1 VALUES (-5,'example2', sysdate(),p_date); INSERT INTO t1 VALUES (-7,'example2', sysdate(),p_date); END ; $$ CREATE PROCEDURE example3 (p_date DATETIME) BEGIN -- duplicate on second insert INSERT INTO t1 VALUES (-8,'example3', sysdate(),p_date); INSERT INTO t1 VALUES (-5,'example3', sysdate(),p_date); END ; $$ CREATE PROCEDURE example4 (p_date DATETIME) BEGIN -- duplicate on first entry multi insert INSERT INTO t1 VALUES (-5,'example4', sysdate(),p_date),(-9,'example4', sysdate(),p_date); END ; $$ CREATE PROCEDURE example5 (p_date DATETIME) BEGIN -- duplicate on second entry multi insert INSERT INTO t1 VALUES (-5,'example5', sysdate(),p_date),(-10,'example5', sysdate(),p_date); END ; $$ DELIMITER ; insert into t1 values (-1, now(),sysdate()); select * from t1; insert into t1 values (-1, 'single insert',sysdate(),now()); select * from t1; insert into t1 values (-2, 'multi insert',sysdate(),now()),(-3,'multi insert',sysdate(),now()); select * from t1; insert into t1 values (-3, 'multi insert partial overlap',sysdate(),now()),(-4,'multi insert partial overlap',sysdate(),now()); select * from t1; insert into t1 values (-4, 'multi insert partial overlap',sysdate(),now()),(-3,'multi insert partial overlap',sysdate(),now()); select * from t1; call example1(now()); select * from t1; call example2(now()); select * from t1; call example3(now()); select * from t1; call example4(now()); select * from t1; call example5(now()); select * from t1;