Опитайте се да използвате редовни събития. За да започнете, активирайте Планировчика на събития с помощта на
SET GLOBAL event_scheduler = ON;
След това можете да създадете събитие което ще провери времето за създаване на редове. Например
CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE
DO
DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;
Ако във вашата таблица няма колона с времеви печат на създаване на ред, тогава можете да създадете тригер, който ще вмъкне текущо времеви печат и вмъкнат идентификатор на ред в спомагателната таблица.
CREATE TRIGGER logCreator AFTER INSERT ON MainTable
FOR EACH ROW
INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);
След това можете да използвате този дневник, за да получите ключове от основната таблица, която е създадена преди определено време.
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 ;