Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menghapus baris data dari tabel mysql secara otomatis dengan 24 jam setelah data masuk ke tabel?

Cobalah untuk menggunakan acara reguler. Untuk memulai, aktifkan Penjadwal Acara menggunakan

SET GLOBAL event_scheduler = ON;

Setelah itu, Anda dapat membuat acara yang akan memeriksa waktu pembuatan baris. Misalnya

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

Jika tidak ada kolom dengan stempel waktu pembuatan baris di tabel Anda, maka Anda dapat membuat pemicu yang akan menyisipkan stempel waktu saat ini dan memasukkan pengidentifikasi baris ke tabel tambahan.

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

Kemudian Anda dapat menggunakan log ini untuk mendapatkan kunci tabel utama yang dibuat sebelum waktu tertentu.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format tanggal MySQL

  2. F# error 'error FS0039:Namespace atau modul 'MySql' tidak ditentukan'?

  3. Bagaimana cara membuat dua kolom kenaikan otomatis di MySQL?

  4. partisi otomatis database mysql

  5. Menggunakan Grup Non-Menangkap di MySQL REGEXP