Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tự động xóa các hàng dữ liệu khỏi bảng mysql sau 24 giờ kể từ khi dữ liệu vào bảng?

Cố gắng sử dụng các sự kiện thường xuyên. Để bắt đầu, hãy bật Trình lập lịch sự kiện bằng

SET GLOBAL event_scheduler = ON;

Sau đó, bạn có thể xếp sự kiện điều đó sẽ kiểm tra thời gian tạo hàng. Ví dụ

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

Nếu không có cột nào có dấu thời gian của việc tạo hàng trong bảng của bạn, thì bạn có thể tạo trình kích hoạt sẽ chèn dấu thời gian hiện tại và bộ nhận dạng hàng đã chèn vào bảng phụ.

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

Sau đó, bạn có thể sử dụng nhật ký này để nhận các khóa của bảng chính đã được tạo trước thời gian cụ thể.

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. Lưu hình ảnh trong MySQL từ Java

  2. MySQL / Python -> Cú pháp sai cho trình giữ chỗ trong câu lệnh?

  3. Mysql Nối hai cột trong khi tìm kiếm bằng LIKE

  4. Trộn một chuỗi với mysql / sql

  5. PDO IN () Tuyên bố mảng VÀ một trình giữ chỗ