Trate de usar eventos regulares. Para comenzar, habilite el Programador de eventos usando
SET GLOBAL event_scheduler = ON;
Después de eso, podrías crate event eso verificará el tiempo de creación de filas. Por ejemplo
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Si no hay una columna con la marca de tiempo de la creación de una fila en su tabla, entonces puede crear un disparador que insertará la marca de tiempo actual y el identificador de fila insertado en la tabla auxiliar.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Luego, puede usar este registro para obtener las claves de la tabla principal que se creó antes de una hora específica.
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 ;