sql >> Database teknologi >  >> RDS >> Mysql

Hvordan sletter jeg rækker af data fra mysql-tabellen automatisk med 24 timer efter data i tabellen?

Prøv at bruge regelmæssige arrangementer. For at komme i gang skal du aktivere Event Scheduler ved hjælp af

SET GLOBAL event_scheduler = ON;

Derefter kunne du kassebegivenhed der vil kontrollere rækkeernes oprettelsestid. For eksempel

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

Hvis der ikke er nogen kolonne med tidsstempel for en rækkeoprettelse i din tabel, kan du oprette trigger, der indsætter det aktuelle tidsstempel og indsat rækkeidentifikator i hjælpetabel.

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

Så kan du bruge denne log til at få nøgler til hovedtabellen, der blev oprettet før et bestemt tidspunkt.

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. DATEDIFF() eller BETWEEN for datointervaller i SQL-forespørgsler

  2. 5 grunde til, at Microsoft Access er fantastisk til startups

  3. Forståelse af PostgreSQL-forespørgselsydeevne

  4. skifte fra MySQL til PostgreSQL for Ruby on Rails af hensyn til Heroku