Prøv at bruge regelmæssige arrangementer. For at komme i gang skal du aktivere Event Scheduler ved hjælp af
SET GLOBAL event_scheduler = ON;
Derefter kunne du kassebegivenhed der vil kontrollere rækkeernes oprettelsestid. For eksempel
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Hvis der ikke er nogen kolonne med tidsstempel for en rækkeoprettelse i din tabel, kan du oprette trigger, der indsætter det aktuelle tidsstempel og indsat rækkeidentifikator i hjælpetabel.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Så kan du bruge denne log til at få nøgler til hovedtabellen, der blev oprettet før et bestemt tidspunkt.
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 ;