Essayez d'utiliser des événements réguliers. Pour commencer, activez le planificateur d'événements à l'aide de
SET GLOBAL event_scheduler = ON;
Après cela, vous pouvez crate event qui vérifiera le temps de création des lignes. Par exemple
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
S'il n'y a pas de colonne avec l'horodatage d'une création de ligne dans votre table, vous pouvez créer un déclencheur qui insérera l'horodatage actuel et l'identifiant de ligne inséré dans la table auxiliaire.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Ensuite, vous pouvez utiliser ce journal pour obtenir les clés de la table principale créée avant une heure spécifique.
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 ;