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

जब डेटाबेस में एक नई पंक्ति जोड़ी जाती है, तो एक बाहरी कमांड लाइन प्रोग्राम को लागू किया जाना चाहिए

चाड बिर्च के पास MySQL ट्रिगर और उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन . आप MySQL CREATE TRIGGER Syntax संदर्भ।

लेकिन क्या आप सुनिश्चित हैं कि पंक्ति डालने पर आपको तुरंत निष्पादन योग्य कॉल करने की आवश्यकता है? ऐसा लगता है कि विधि विफलता के लिए प्रवण होगी, क्योंकि MySQL एक ही समय में निष्पादन योग्य के कई उदाहरण उत्पन्न कर सकता है। यदि आपका निष्पादन योग्य विफल हो जाता है, तो कोई रिकॉर्ड नहीं होगा कि कौन सी पंक्तियों को अभी तक संसाधित किया गया है और कौन सी नहीं। यदि MySQL आपके निष्पादन योग्य के समाप्त होने की प्रतीक्षा कर रहा है, तो पंक्तियाँ सम्मिलित करना बहुत धीमा हो सकता है। साथ ही, अगर चाड बिर्च सही है, तो उसे MySQL को फिर से कंपाइल करना होगा, इसलिए यह मुश्किल लगता है।

निष्पादन योग्य को सीधे MySQL से कॉल करने के बजाय, मैं केवल इस तथ्य को रिकॉर्ड करने के लिए ट्रिगर्स का उपयोग करूंगा कि एक पंक्ति INSERTED या UPDATED हो गई है:डेटाबेस में उस जानकारी को रिकॉर्ड करें, या तो अपनी मौजूदा तालिकाओं में नए कॉलम के साथ या एक नई तालिका के साथ कहें database_changes . फिर एक बाहरी प्रोग्राम बनाएं जो नियमित रूप से डेटाबेस से जानकारी पढ़ता है, इसे संसाधित करता है, और इसे हो गया के रूप में चिह्नित करता है।

आपका विशिष्ट समाधान इस बात पर निर्भर करेगा कि बाहरी कार्यक्रम को वास्तव में किन मापदंडों की आवश्यकता है।

यदि आपके बाहरी प्रोग्राम को यह जानने की आवश्यकता है कि कौन सी पंक्ति डाली गई थी, तो आपका समाधान इस प्रकार हो सकता है:database_changes नामक एक नई तालिका बनाएं फ़ील्ड के साथ date , table_name , और row_id , और अन्य सभी तालिकाओं के लिए, इस तरह एक ट्रिगर बनाएं:

CREATE TRIGGER `my_trigger`
AFTER INSERT ON `table_name`
FOR EACH ROW BEGIN
  INSERT INTO `database_changes` (`date`, `table_name`, `row_id`)
  VALUES (NOW(), "table_name", NEW.id)
END;

तब आपकी बैच स्क्रिप्ट कुछ इस तरह कर सकती है:

  1. डेटाबेस_परिवर्तन तालिका में पहली पंक्ति का चयन करें।
  2. इसे संसाधित करें।
  3. इसे हटाएं।
  4. 1-3 को database_changes . तक दोहराएं खाली है।

इस दृष्टिकोण के साथ, आप इस पर अधिक नियंत्रण कर सकते हैं कि डेटा कब और कैसे संसाधित होता है, और आप यह देखने के लिए आसानी से जांच सकते हैं कि क्या डेटा वास्तव में संसाधित हुआ है (बस यह देखने के लिए जांचें कि क्या database_changes टेबल खाली है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज़ में कमांड लाइन से mysql डेटा निर्देशिका कैसे खोजें

  2. MySQL के साथ रेल पर रूबी कैसे स्थापित करें और इसे एक कदम दर कदम गाइड के साथ काम करें?

  3. MySQL में दिनांक फ़ील्ड में वर्ष के अनुसार समूहित करें

  4. होमस्टेड - मेरे डेटाबेस से जुड़ रहा है

  5. तालिकाओं के बीच mysql चाल पंक्ति