sql >> Database >  >> RDS >> Mysql

Hoe verwijder ik automatisch rijen met gegevens uit de mysql-tabel met 24 uur nadat de gegevens in de tabel zijn geplaatst?

Probeer regelmatig evenementen te gebruiken. Schakel om te beginnen de Evenementplanner in met

SET GLOBAL event_scheduler = ON;

Daarna kun je crate-evenement dat zal de tijd voor het maken van rijen controleren. Bijvoorbeeld

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

Als er geen kolom is met een tijdstempel van het maken van een rij in uw tabel, kunt u een trigger maken die het huidige tijdstempel en een rij-ID in de hulptabel invoegt.

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

Dan kunt u dit logboek gebruiken om sleutels te krijgen van de hoofdtabel die vóór een bepaalde tijd is gemaakt.

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. Voorbeelden van het converteren van 'date' naar 'smalldatetime' in SQL Server (T-SQL)

  2. Mysql-waarde splitsen in een onbekend aantal delen

  3. Kolomrechten toepassen voor een tabel via een trigger

  4. Hoe ArangoDB op Ubuntu 20.04 te installeren