DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_deactivateUnused`() BEGIN /** * Cambia a false el campo isActive de la tabla vn.item para todos aquellos * items que no se han comprado en los Ășltimos meses configurados en * @vn.itemConfig.monthToDeactivate */ DECLARE vMonthToDeactivate INT; SELECT monthToDeactivate INTO vMonthToDeactivate FROM vn.itemConfig; DROP TEMPORARY TABLE IF EXISTS tmp.buyMaxCreated; CREATE TEMPORARY TABLE tmp.buyMaxCreated ENGINE = MEMORY SELECT b.itemFk, MAX(b.created) created FROM vn.buy b JOIN vn.item i ON i.id = b.itemFk WHERE i.isActive GROUP BY itemFk; UPDATE vn.item i JOIN tmp.buyMaxCreated bmc ON bmc.itemFk = i.id SET i.isActive = FALSE WHERE bmc.created < util.VN_CURDATE() - INTERVAL vMonthToDeactivate MONTH; DROP TEMPORARY TABLE IF EXISTS tmp.buyMaxCreated; END$$ DELIMITER ;