DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sharingCart_beforeUpdate` BEFORE UPDATE ON `sharingCart` FOR EACH ROW BEGIN IF NEW.workerFk = NEW.workerSubstitute THEN CALL util.throw ('worker and workerSubstitute must be different'); ELSE DELETE sc FROM sharingCartDaily sc WHERE sc.dated BETWEEN OLD.started AND OLD.ended AND sc.ownerFk = OLD.workerFk AND sc.substituteFk = OLD.workerSubstitute; INSERT IGNORE INTO sharingCartDaily (ownerFk, substituteFk, dated) SELECT NEW.workerFk, NEW.workerSubstitute, dated FROM time WHERE dated BETWEEN NEW.started AND NEW.ended; END IF; END$$ DELIMITER ;