定期的なイベントを使用してみてください。開始するには、
を使用してイベントスケジューラを有効にします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 ;