sql >> Database >  >> RDS >> Mysql

Hoe kan ik een e-mail ontvangen wanneer mijn MySQL-tabel is bijgewerkt?

De beste manier om dit te bereiken is door een trigger en een cron te gebruiken. Maak een 'notificatiewachtrij'-tabel en vul die met een trigger wanneer een rij in de gewenste tabel wordt ingevoegd.

bijv.

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

Definieer vervolgens een eenvoudige trigger:

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 ;

Vanaf dat moment hoef je alleen maar een crontab te laten draaien op de server (zeg elke minuut) die selecteert uit de notification tabel waar sent = 0 , verstuur de melding en stel sent = 1 in

Voor zover ik weet, is dat de beste manier om die informatie uit de database te krijgen zonder de bin-logboeken te lezen.

Als je een voorbeeld nodig hebt van het script dat met cron moet worden uitgevoerd:

#!/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


  1. Maak een lijst van alle sequenties in een Postgres db 8.1 met SQL

  2. Een RESTful API gebruiken voor dynamische websites

  3. Hoe nauwkeurig moet ik de breedte- en lengtegraad opslaan?

  4. Node Mysql asynchrone meerdere zoekopdrachten