我的MySQL表更新后如何收到电子邮件?

use*_*377 4 mysql insert sql-update

嗨,我想知道,如果MySQL表中添加了一行,MySQL是否有办法自动发送电子邮件给自己?

cal*_*nai 8

最好的方式实现这一目标将使用触发器和一个cron.创建一个"通知队列"表并填充有触发时的行被插入到所需的表.

例如.

CREATE TABLE `notification_queue` (
  `notification_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `sent` tinyint(1) unsigned NOT NULL,
  PRIMARY KEY (`notification_id`)
);
Run Code Online (Sandbox Code Playgroud)

然后定义一个简单的触发器

DELIMITER $$
CREATE TRIGGER t_notification_insert 
AFTER INSERT ON [table_being_inserted]
FOR EACH ROW 
BEGIN 
    INSERT INTO `notification_queue` (`sent`) VALUES (0);
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

从那时起,您需要做的就是在服务器上运行一个crontab(比如每分钟),从notification表中选择sent = 0,发送通知和设置sent = 1

据我所知,这是该信息的获取了DB的不读仓日志的最佳方式.

如果您需要使用cron运行脚本的示例:

#!/bin/bash

DB_USER=''
DB_PASS=''
DB_NAME=''

ID=`mysql -u$DB_USER -p$DB_PASS $DB_NAME -Bse "SELECT notification_id FROM notification_queue WHERE sent=0 LIMIT 1;"`

if [[ ! -z $ID ]] 
then
    # SEND MAIL HERE
    RESULT=`mysql -u$DB_USER -p$DB_PASS $DB_NAME -Bse "UPDATE notification_queue SET sent=1 WHERE notification_id = $ID;"`
    echo "Sent"
fi
Run Code Online (Sandbox Code Playgroud)