sql >> Databáze >  >> RDS >> Mysql

Jak odstraním řádky dat z tabulky mysql automaticky 24 hodin po datu do tabulky?

Zkuste využít pravidelné akce. Chcete-li začít, povolte Plánovač událostí pomocí

SET GLOBAL event_scheduler = ON;

Poté můžete připravit událost která zkontroluje čas vytvoření řádků. Například

CREATE EVENT recycling ON SCHEDULE EVERY 1 HOUR ENABLE 
  DO 
  DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR;

Pokud ve vaší tabulce není žádný sloupec s časovým razítkem vytvoření řádku, můžete vytvořit spouštěč, který vloží aktuální časové razítko a vložený identifikátor řádku do pomocné tabulky.

CREATE TRIGGER logCreator AFTER INSERT ON MainTable
  FOR EACH ROW 
  INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP);

Pak můžete tento protokol použít k získání klíčů hlavní tabulky, která byla vytvořena před určitým časem.

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 ;


  1. zobrazení odkazu v php

  2. Jak nainstaluji pouze klientské nástroje pro PostgreSQL na Windows?

  3. Jak zkontrolovat formát data vaší Oracle Session

  4. MariaDB přichází do města ve vašem okolí!