Försök att använda vanliga evenemang. För att komma igång, aktivera händelseschemaläggaren med
SET GLOBAL event_scheduler = ON;
Efter det kunde du crate-event som kommer att kontrollera skapandet av rader. Till exempel
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Om det inte finns någon kolumn med tidsstämpel för en rad som skapats i din tabell, kan du skapa utlösare som infogar aktuell tidsstämpel och infogade radidentifierare i hjälptabellen.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Sedan kan du använda den här loggen för att hämta nycklar till huvudtabellen som skapades före en viss tid.
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 ;