sql >> Databáze >  >> RDS >> Mysql

Jak mohu obdržet e-mail, když je moje tabulka MySQL aktualizována?

Nejlepší způsob, jak toho dosáhnout, je použít spoušť a cron. Vytvořte tabulku „oznamovací fronty“ a naplňte ji spouštěčem, když je do požadované tabulky vložen řádek.

např.

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

Poté definujte jednoduchý spouštěč:

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 ;

Od tohoto okamžiku vše, co musíte udělat, je spustit crontab na serveru (řekněme každou minutu), který vybere z notification tabulka, kde sent = 0 , odešlete upozornění a nastavte sent = 1

Pokud vím, je to nejlepší způsob, jak dostat tyto informace z DB bez čtení protokolů přihrádek.

Pokud potřebujete příklad skriptu pro spuštění s cronem:

#!/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. jak používat XMLImporter a FndXdfCmp v Oracle EBS

  2. jak používat mysql s asp.net?

  3. Závažná chyba:Volání nedefinované funkce getRecords() v C:\xampp\htdocs\Employees.php na řádku 101

  4. 3 věci, které byste měli vědět o databázích