Prova a usare eventi regolari. Per iniziare, abilita l'Utilità di pianificazione eventi utilizzando
SET GLOBAL event_scheduler = ON;
Dopodiché puoi crate event che controllerà il tempo di creazione delle righe. Ad esempio
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Se nella tabella non è presente alcuna colonna con il timestamp della creazione di una riga, puoi creare un trigger che inserirà il timestamp corrente e l'identificatore di riga inserito nella tabella ausiliaria.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Quindi puoi utilizzare questo registro per ottenere le chiavi della tabella principale che è stata creata prima di un'ora specifica.
delimiter |
CREATE EVENT cleaner ON SCHEDULE EVERY 1 HOUR ENABLE
DO
BEGIN
DECLARE MaxTime TIMESTAMP;
SET MaxTime = CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
DELETE FROM MainTable
WHERE id IN (SELECT MainID FROM LogTable WHERE Created < MaxTime);
DELETE FROM LogTable WHERE LogTable.Created < MaxTime;
END |
delimiter ;