如何使用 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 行(没有新行)
我编写了一个请求程序,其中包含每当插入新数据时自动发送邮件。我想使用 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 行(没有新行)