【问题标题】:MySQL Triggers, summary each minuteMySQL 触发器,每分钟汇总一次
【发布时间】:2014-09-12 10:39:29
【问题描述】:
我有一些连续生成的数据,我想知道我该如何做这样的事情:
每分钟需要从前一分钟开始的 x 条记录,进行某种汇总并将其放在第二个表中。
表看起来像:
http://puu.sh/bvNA3/9616f1037f.png
列:ID、ID_pistol、ID_container、start_time、stop_time、音量、brutto、netto、温度
在一分钟的结果中,它将是体积、bruto、netto cols 和平均温度的总和。
如果有人有什么建议,我将不胜感激。
【问题讨论】:
标签:
mysql
triggers
summary
【解决方案1】:
为此使用事件调度程序。假设第一个表中的ID 有AUTO_INCREMENT 选项。然后我建议添加到第二个表last_id 列(记录最后处理的ID 从第一个表)。然后创建事件:
CREATE EVENT myevent
ON SCHEDULE EVERY 1 MINUTE
DO
INSERT INTO second_table(volume_sum, bruto_sum, netto_sum, temperature_avg, last_id)
SELECT SUM(f.volume), SUM(f.brutto), SUM(f.netto), AVG(f.temperature), MAX(f.ID)
FROM first_table f
WHERE f.ID > IFNULL((SELECT MAX(last_id) FROM second_table), 0);
这仅在 Event Scheduler 启动时有效。具有管理员权限的用户可以检查并启动它。检查:
SHOW VARIABLES like 'event_scheduler';
答案必须是ON。如果是OFF,则运行:
SET GLOBAL event_scheduler = ON;
文档: