event.sql 1.0 KB

123456789101112131415161718192021222324252627282930
  1. USE industrial_data;
  2. -- 创建最近数据表
  3. CREATE TABLE recent_data (
  4. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  5. point_id INT NOT NULL COMMENT '数据点ID',
  6. bool_value BOOLEAN NULL COMMENT '布尔值',
  7. int_value INT NULL COMMENT '整数值',
  8. real_value FLOAT NULL COMMENT '实数值',
  9. timestamp TIMESTAMP(3) NOT NULL COMMENT '数据时间戳(毫秒精度)',
  10. create_time TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '数据创建时间(毫秒精度)',
  11. FOREIGN KEY (point_id) REFERENCES data_points(id),
  12. INDEX (point_id, timestamp)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='最近数据表';
  14. DELIMITER //
  15. CREATE EVENT purge_old_data
  16. ON SCHEDULE EVERY 1 DAY
  17. STARTS TIMESTAMP(CURRENT_DATE, '01:00:00') + INTERVAL 1 DAY
  18. COMMENT '每天凌晨删除昨天之前的所有数据'
  19. DO
  20. BEGIN
  21. -- 删除昨天之前的所有数据(保留昨天和今天的数据)
  22. DELETE FROM recent_data
  23. WHERE timestamp < DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);
  24. END//
  25. DELIMITER ;