sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag få ett e-postmeddelande när min MySQL-tabell uppdateras?

Det bästa sättet att uppnå detta är att använda en trigger och en cron. Skapa en "aviseringskö"-tabell och fyll den med en utlösare när en rad infogas i den önskade tabellen.

t.ex.

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

Definiera sedan en enkel 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 ;

Från den punkten är allt du behöver göra att köra en crontab på servern (säg varje minut) som väljer från notification tabell där sent = 0 , skicka meddelandet och ställ in sent = 1

Så vitt jag vet är det det bästa sättet att få ut den informationen ur databasen utan att läsa lagerloggarna.

Om du behöver ett exempel på skriptet som ska köras med 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


  1. Administratörsskript i R12.2 Ebuisness Suite

  2. Mysql fulltext sökrelevans över flera tabeller

  3. Hur konverterar man datum från ett format till ett annat?

  4. Hur man beräknar glidande medelvärde i rödförskjutning