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

मैं PostgreSQL ट्रिगर से ईमेल कैसे भेज सकता हूं?

उत्कृष्ट-हमेशा की तरह depesz आलेख, और pg-message-queue देखें।

डेटाबेस से सीधे ईमेल भेजना एक अच्छा विचार नहीं हो सकता है। क्या होगा यदि DNS रिज़ॉल्यूशन धीमा है और सब कुछ 30 सेकंड के लिए हैंग हो जाता है तो समय समाप्त हो जाता है? क्या होगा यदि आपका मेल सर्वर डगमगा रहा है और 5 मिनट . लेता है संदेशों को स्वीकार करने के लिए? जब तक आप max_connections . पर नहीं होंगे, तब तक आपको अपने ट्रिगर में डेटाबेस सत्र लटकाए रहेंगे और अचानक आप कुछ भी नहीं कर सकते लेकिन प्रतीक्षा करें या लेनदेन को मैन्युअल रूप से रद्द करना शुरू करें।

मेरा सुझाव है कि आपका ट्रिगर NOTIFY एक LISTEN आईएनजी सहायक स्क्रिप्ट जो स्थायी रूप से चलती रहती है और डीबी से जुड़ी होती है (लेकिन लेनदेन में नहीं)।

आपको बस इतना करना है INSERT एक कतार तालिका में एक पंक्ति और एक NOTIFY . भेजें . आपकी स्क्रिप्ट को NOTIFY . मिलता है संदेश क्योंकि यह LISTEN . में पंजीकृत है इसके लिए, क्यू टेबल की जांच करता है, और बाकी काम करता है।

आप किसी भी भाषा में हेल्पर प्रोग्राम लिख सकते हैं जो सुविधाजनक हो; मैं आमतौर पर psycopg2 . के साथ पायथन का उपयोग करता हूं ।

वह स्क्रिप्ट डेटाबेस में मिली जानकारी के आधार पर ईमेल भेज सकती है। आपको पीएल/पीजीएसक्यूएल में सभी बदसूरत टेक्स्ट स्वरूपण करने की ज़रूरत नहीं है, आप चीजों को एक अधिक शक्तिशाली स्क्रिप्टिंग भाषा में टेम्पलेट में प्रतिस्थापित कर सकते हैं, और जब कोई NOTIFY डेटाबेस से परिवर्तनीय डेटा प्राप्त कर सकता है> में आता है।

इस दृष्टिकोण के साथ आपका सहायक प्रत्येक संदेश भेज सकता है और उसके बाद ही कतार तालिका से जानकारी निकाल सकता है। इस तरह यदि आपके मेल सिस्टम में अस्थायी समस्याएं हैं जिसके कारण भेजना विफल हो जाता है, तो आपने जानकारी नहीं खोई है और जब तक आप सफल नहीं हो जाते, तब तक इसे भेजने का प्रयास जारी रख सकते हैं।

यदि आपको वास्तव में डेटाबेस में ऐसा करना है, तो PgMail देखें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON डेटाटाइप में रिकॉर्ड के नेस्टेड सरणी के साथ क्वेरी संयोजन

  2. तारों को संग्रहित करने के लिए डेटा प्रकार टेक्स्ट का उपयोग करने का कोई डाउनसाइड्स?

  3. Postgres में फ़ंक्शन ओवरलोडिंग को अक्षम करने का कोई तरीका है

  4. PostgreSQL क्वेरी को दिन के हिसाब से गिनने/समूहित करने के लिए और बिना डेटा वाले दिनों को प्रदर्शित करने के लिए

  5. PostgreSQL में VACUUM प्रसंस्करण का अवलोकन