如何使用 cron 作业检查 MySQL table 更新和发送邮件

How to check MySQL table updates and send mail using cron job

我编写了一个请求程序,其中包含每当插入新数据时自动发送邮件。我想使用 cron 来激活请求。

每当 MySQL 更新时,我希望自动收到一封邮件。

我建议以下解决方案:

1) 添加默认值为 'INSERTED' 的列 'Status' 并创建一个简单的程序,该程序将每分钟检索状态为 'Inserted' 的行并发送电子邮件通知。发送电子邮件后,您应该将状态更新为 'SENDED' 或类似的内容。

ALTER TABLE `your_table` 
ADD COLUMN `STATUS` VARCHAR(45) NULL DEFAULT 'INSERTED';

您的应用程序由 cron 作业安排,应通过查询检索数据:

select <some_fields>
from  <your_table>
where status = 'INSERTED'; 

<send email logic>

update <your_table>
set status = 'SENDED'; 
where status = 'INSERTED'; 

2) 创建触发器,将有关新行的信息插入单独的 table。接下来的步骤与之前的方法相同。

CREATE TRIGGER save_inserted_data AFTER INSERT ON your_table
FOR EACH ROW BEGIN
      insert into log_table (id)
      values (:new.id)
END;

<send email logic>

delete from log_table; 

并且您应该添加一些逻辑,以便在发送电子邮件时考虑新行。即

  • 插入了 3 行
  • 您为电子邮件通知检索了 3 行
  • 有人添加新的
  • 只需要 mark/delete 3 行(没有新行)