Versuchen Sie, regelmäßige Ereignisse zu verwenden. Aktivieren Sie zunächst den Ereignisplaner mit
SET GLOBAL event_scheduler = ON;
Danach können Sie Ereignisse erstellen Dadurch wird die Erstellungszeit der Zeilen überprüft. Zum Beispiel
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Wenn in Ihrer Tabelle keine Spalte mit dem Zeitstempel einer Zeilenerstellung vorhanden ist, können Sie einen Trigger erstellen, der den aktuellen Zeitstempel und die eingefügte Zeilenkennung in die Hilfstabelle einfügt.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
Dann können Sie dieses Protokoll verwenden, um Schlüssel der Haupttabelle zu erhalten, die vor einer bestimmten Zeit erstellt wurde.
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 ;