Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để nhận e-mail khi bảng MySQL của tôi được cập nhật?

Cách tốt nhất để đạt được điều này là sử dụng trigger và cron. Tạo bảng 'hàng đợi thông báo' và điền bảng đó bằng trình kích hoạt khi một hàng được chèn vào bảng mong muốn.

ví dụ:

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

Sau đó, xác định một trình kích hoạt đơn giản:

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 ;

Từ thời điểm đó, tất cả những gì bạn cần làm là chạy crontab trên máy chủ (giả sử mỗi phút) được chọn từ notification bảng mà sent = 0 , gửi thông báo và đặt sent = 1

Theo như tôi biết, đó là cách tốt nhất để lấy thông tin đó ra khỏi DB mà không cần đọc nhật ký thùng.

Nếu bạn cần một ví dụ về tập lệnh để chạy với 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. Cách tìm và thay thế văn bản trong cơ sở dữ liệu MySQL bằng SQL

  2. nodejs express / route và mysql

  3. MYSQL TỶ LỆ NGÀY và TỶ LỆ THỜI GIAN

  4. Làm thế nào để bạn có được ngày sắp tới tiếp theo từ một bảng?

  5. Không thể kết nối với AWS RDS thông qua PDO