sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo recibir un correo electrónico cuando se actualice mi tabla MySQL?

La mejor manera de lograr esto sería usando un disparador y un cron. Cree una tabla de 'cola de notificación' y complétela con un disparador cuando se inserte una fila en la tabla deseada.

ej.

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

Luego defina un disparador simple:

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 ;

A partir de ese momento, todo lo que necesita hacer es ejecutar un crontab en el servidor (digamos cada minuto) que selecciona de la notification tabla donde sent = 0 , envíe la notificación y configure sent = 1

Hasta donde yo sé, esa es la mejor manera de obtener esa información de la base de datos sin leer los registros del contenedor.

Si necesita un ejemplo del script para ejecutar con 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