Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जब मेरी MySQL तालिका अपडेट की जाती है, तो मैं ई-मेल कैसे प्राप्त कर सकता हूं?

इसे प्राप्त करने का सबसे अच्छा तरीका ट्रिगर और क्रॉन का उपयोग करना होगा। एक 'सूचना कतार' तालिका बनाएं और वांछित तालिका में एक पंक्ति डालने पर ट्रिगर के साथ पॉप्युलेट करें।

उदा.

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 ;

उस बिंदु से, आपको केवल सर्वर पर एक क्रॉस्टैब चलाने की आवश्यकता है (हर मिनट कहें) जो notification से चयन करता है तालिका जहां sent = 0 , अधिसूचना भेजें और सेट करें sent = 1

जहाँ तक मुझे पता है, बिन लॉग पढ़े बिना उस जानकारी को DB से बाहर निकालने का यह सबसे अच्छा तरीका है।

यदि आपको क्रॉन के साथ चलने के लिए स्क्रिप्ट के उदाहरण की आवश्यकता है:

#!/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. OSX 10.6 में Python और Django के साथ MySQLdb का उपयोग कैसे करें?

  2. जहां खंड में mysql कास्टिंग स्ट्रिंग को int में रोकें

  3. MySQL - सबक्वेरी के आधार पर मान अपडेट करें

  4. यूटीएफ -8 के साथ django और mysql काम कैसे सेट करें?

  5. WHERE जॉइन पर क्लॉज एक्ज़ीक्यूशन टाइम में 4 सेकंड जोड़ रहा है