DROP PROCEDURE IF EXISTS vn.clean; DELIMITER $$ $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`clean`() BEGIN DECLARE vDateShort DATETIME; DECLARE vOneYearAgo DATE; DECLARE vFourYearsAgo DATE; DECLARE v18Month DATE; DECLARE v26Month DATE; DECLARE v3Month DATE; DECLARE vTrashId varchar(15); SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE()); SET vOneYearAgo = TIMESTAMPADD(YEAR,-1,CURDATE()); SET vFourYearsAgo = TIMESTAMPADD(YEAR,-4,CURDATE()); SET v18Month = TIMESTAMPADD(MONTH, -18,CURDATE()); SET v26Month = TIMESTAMPADD(MONTH, -26,CURDATE()); SET v3Month = TIMESTAMPADD(MONTH, -3, CURDATE()); DELETE FROM ticketParking WHERE created < vDateShort; DELETE FROM routesMonitor WHERE dated < vDateShort; DELETE FROM workerTimeControlLog WHERE created < vDateShort; DELETE FROM `message` WHERE sendDate < vDateShort; DELETE FROM messageInbox WHERE sendDate < vDateShort; DELETE FROM messageInbox WHERE sendDate < vDateShort; DELETE FROM workerTimeControl WHERE timed < vFourYearsAgo; DELETE FROM itemShelving WHERE created < CURDATE() AND visible = 0; DELETE FROM ticketDown WHERE created < TIMESTAMPADD(DAY,-1,CURDATE()); DELETE FROM entryLog WHERE creationDate < vDateShort; DELETE IGNORE FROM expedition WHERE created < v26Month; DELETE FROM sms WHERE created < v18Month; DELETE FROM saleTracking WHERE created < vOneYearAgo; DELETE tobs FROM ticketObservation tobs JOIN ticket t ON tobs.ticketFk = t.id WHERE t.shipped < TIMESTAMPADD(YEAR,-2,CURDATE()); DELETE sc.* FROM saleCloned sc JOIN sale s ON s.id = sc.saleClonedFk JOIN ticket t ON t.id = s.ticketFk WHERE t.shipped < vOneYearAgo; DELETE FROM sharingCart where ended < vDateShort; DELETE FROM sharingClient where ended < vDateShort; DELETE tw.* FROM ticketWeekly tw LEFT JOIN sale s ON s.ticketFk = tw.ticketFk WHERE s.itemFk IS NULL; DELETE FROM claim WHERE ticketCreated < vFourYearsAgo; DELETE FROM message WHERE sendDate < vDateShort; -- Robert ubicacion anterior de trevelLog comentario para debug DELETE sc FROM saleChecked sc JOIN sale s ON sc.saleFk = s.id WHERE s.created < vDateShort; DELETE FROM zoneEvent WHERE `type` = 'day' AND dated < v3Month; DELETE bm FROM buyMark bm JOIN buy b ON b.id = bm.id JOIN entry e ON e.id = b.entryFk JOIN travel t ON t.id = e.travelFk WHERE t.landed <= vDateShort; DELETE FROM stowaway WHERE created < v3Month; DELETE FROM vn.buy WHERE created < vDateShort AND entryFk = 9200; DELETE FROM vn.itemShelvingLog WHERE created < vDateShort; DELETE FROM vn.stockBuyed WHERE creationDate < vDateShort; -- Equipos duplicados DELETE w.* FROM workerTeam w JOIN (SELECT id, team, workerFk, COUNT(*) - 1 as duplicated FROM workerTeam GROUP BY team,workerFk HAVING duplicated ) d ON d.team = w.team AND d.workerFk = w.workerFk AND d.id != w.id; DELETE sc FROM saleComponent sc JOIN sale s ON s.id= sc.saleFk JOIN ticket t ON t.id= s.ticketFk WHERE t.shipped < v18Month; DELETE c FROM vn.claim c JOIN vn.claimState cs ON cs.id = c.claimStateFk WHERE cs.description = "Anulado" AND c.created < vDateShort; DELETE FROM vn.expeditionTruck WHERE ETD < v3Month; -- borrar travels sin entradas DROP TEMPORARY TABLE IF EXISTS tmp.thermographToDelete; CREATE TEMPORARY TABLE tmp.thermographToDelete SELECT th.id,th.dmsFk FROM vn.travel t LEFT JOIN vn.entry e ON e.travelFk = t.id JOIN vn.travelThermograph th ON th.travelFk = t.id WHERE t.shipped < TIMESTAMPADD(MONTH, -3, CURDATE()) AND e.travelFk IS NULL; SELECT dt.id into vTrashId FROM vn.dmsType dt WHERE dt.code = 'trash'; UPDATE tmp.thermographToDelete th JOIN vn.dms d ON d.id = th.dmsFk SET d.dmsTypeFk = vTrashId; DELETE th FROM tmp.thermographToDelete tmp JOIN vn.travelThermograph th ON th.id = tmp.id; DELETE t FROM vn.travel t LEFT JOIN vn.entry e ON e.travelFk = t.id WHERE t.shipped < TIMESTAMPADD(MONTH, -3, CURDATE()) AND e.travelFk IS NULL; UPDATE dms d JOIN dmsType dt ON dt.id = d.dmsTypeFk SET d.dmsTypeFk = vTrashId WHERE created < TIMESTAMPADD(MONTH, -dt.monthToDelete, CURDATE()); -- borrar entradas sin compras DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; CREATE TEMPORARY TABLE tmp.entryToDelete SELECT e.* FROM vn.entry e LEFT JOIN vn.buy b ON b.entryFk = e.id JOIN vn.entryConfig ec ON e.id != ec.defaultEntry WHERE e.dated < TIMESTAMPADD(MONTH, -3, CURDATE()) AND b.entryFK IS NULL; DELETE e FROM vn.entry e JOIN tmp.entryToDelete tmp ON tmp.id = e.id; -- borrar de route registros menores a 4 años DROP TEMPORARY TABLE IF EXISTS tmp.routeToDelete; CREATE TEMPORARY TABLE tmp.routeToDelete SELECT * FROM vn.route r WHERE created < TIMESTAMPADD(YEAR,-4,CURDATE()); UPDATE tmp.routeToDelete tmp JOIN vn.dms d ON d.id = tmp.gestdocFk SET d.dmsTypeFk = vTrashId; DELETE r FROM tmp.routeToDelete tmp JOIN vn.route r ON r.id = tmp.id; -- borrar registros de dua y awb menores a 2 años DROP TEMPORARY TABLE IF EXISTS tmp.duaToDelete; CREATE TEMPORARY TABLE tmp.duaToDelete SELECT * FROM vn.dua WHERE operated < TIMESTAMPADD(YEAR,-2,CURDATE()); UPDATE tmp.duaToDelete tm JOIN vn.dms d ON d.id = tm.gestdocFk SET d.dmsTypeFk = vTrashId; DELETE d FROM tmp.duaToDelete tmp JOIN vn.dua d ON d.id = tmp.id; DELETE FROM vn.awb WHERE created < TIMESTAMPADD(YEAR,-2,CURDATE()); -- Borra los ficheros gestDoc INSERT INTO vn.printServerQueue(priorityFk, labelReportFk)VALUES(1,11); -- Borra los registros de collection y ticketcollection DELETE FROM vn.collection WHERE created < vDateShort; DROP TEMPORARY TABLE IF EXISTS tmp.thermographToDelete; DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; DROP TEMPORARY TABLE IF EXISTS tmp.duaToDelete; DELETE FROM travelLog WHERE creationDate < v3Month; CALL shelving_clean; END$$ DELIMITER ;