sql >> データベース >  >> RDS >> Mysql

データがテーブルに入ってから24時間後に、mysqlテーブルからデータの行を自動的に削除するにはどうすればよいですか?

    定期的なイベントを使用してみてください。開始するには、

    を使用してイベントスケジューラを有効にします
    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 ;
    


    1. 連続する行によるMySQLグループ

    2. MySQLでデータベースまたはテーブルのインデックスを表示するにはどうすればよいですか?

    3. SQLite-データベースを削除する

    4. SQLiteで数値を通貨としてフォーマットする