Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да получа имейл, когато моята MySQL таблица е актуализирана?

Най-добрият начин да постигнете това би било използването на тригер и cron. Създайте таблица за „опашка за известия“ и я попълнете със задействане, когато в желаната таблица се вмъкне ред.

напр.

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

След това дефинирайте прост тригер:

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 ;

От този момент всичко, което трябва да направите, е да стартирате crontab на сървъра (да речем всяка минута), който избира от notification таблица, където sent = 0 , изпратете известието и задайте sent = 1

Доколкото знам, това е най-добрият начин да извадите тази информация от базата данни, без да четете регистрационните файлове.

Ако имате нужда от пример за скрипта за изпълнение с 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на група по две полета и броене в SQL

  2. Намерих „ИЛИ 1=1/* sql инжекция в моята база данни с бюлетини

  3. MySQL/Python -> Грешен синтаксис за Placeholder в изявления?

  4. PHP MySQL малко изчакване на заявка, трябва да зададете ограничение на 10

  5. mysql, итерирайте през имената на колони