Probeer regelmatig evenementen te gebruiken. Schakel om te beginnen de Evenementplanner in met
SET GLOBAL event_scheduler = ON;
Daarna kun je crate-evenement dat zal de tijd voor het maken van rijen controleren. Bijvoorbeeld
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Als er geen kolom is met een tijdstempel van het maken van een rij in uw tabel, kunt u een trigger maken die het huidige tijdstempel en een rij-ID in de hulptabel invoegt.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Dan kunt u dit logboek gebruiken om sleutels te krijgen van de hoofdtabel die vóór een bepaalde tijd is gemaakt.
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 ;