मॉड्यूल पाठ (4/4)
व्यावहारिक ट्रिगर और लेखापरीक्षा
अब जब हमने सीख लिया है कि स्मार्ट बुलेट्स (ट्रिगर फ़ंक्शंस) कैसे बनाई जाती हैं, तो हमें उन्हें किसी घटना की प्रतीक्षा कर रहे वास्तविक प्राइमेड हथियारों पर माउंट करने की आवश्यकता है: यहां वास्तविक ट्रिगर आते हैं! एक ट्रिगर औपचारिक रूप से पहले से बनाए गए फ़ंक्शन को जोड़ता है और इसे किसी दिए गए टेबल पर किसी विशेष CRUD ईवेंट को "पहले" या "बाद में" सक्रिय करने का निर्देश देता है।
कई विकल्प हैं; उदाहरण के लिए FOR EACH ROW इसे प्रति प्रभावित पंक्ति में एक बार सक्रिय करता है, इसलिए यदि एक थोक क्वेरी 5 मिलियन पंक्तियों से अधिक का वैश्विक अद्यतन है, तो यह 5 मिलियन सूक्ष्म-निष्पादन को सक्रिय करेगा - इससे सावधान रहें!
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();ट्रिगर जावास्क्रिप्ट के लिए अदृश्य है और इंजन में सुरक्षित रूप से सबमिट किए गए अपडेट के आधार पर स्वचालित रूप से स्टॉक को पूरी तरह से सुसंगत बनाए रखेगा।
स्वचालित अपडेटेड_एट
एक सदाबहार व्यावसायिक समस्या है जहाँ हम अपने JS अपडेट मॉडल में { updated_at: new Date() } पास करना भूल जाते हैं। एक ट्रिगर फ़ंक्शन set_updated_at एक BEFORE UPDATE ट्रिगर के साथ मिलकर इस परेशानी को दूर करता है, प्रत्येक रिकॉर्ड परिवर्तन को स्वचालित रूप से चुपचाप अपडेट करता है।
खुद कोशिश करना
'trg_force_uppercase' नाम का एक ट्रिगर बनाएं।\nइसे 'ग्राहक' तालिका पर 'INSERT से पहले' चरण में संलग्न करें।\nप्रत्येक पंक्ति के लिए पंक्ति-दर-पंक्ति गणना को बल दें और 'force_uppercase_name()' फ़ंक्शन के निष्पादन को प्रारंभ करें।\nध्यान दें: शीर्ष पर UDF 'force_uppercase_name' को भी फिर से बनाएं (क्योंकि पर्यावरण अलग है) कोड, फिर ट्रिगर घोषणा जोड़ें।
संकेत दिखाएँ
टेक्स्ट सिंटैक्स: पहले फ़ंक्शन बनाएं, फिर प्रत्येक पंक्ति निष्पादन फ़ंक्शन Force_uppercase_name() के लिए ग्राहकों पर सम्मिलित करने से पहले CREATE TRIGGER trg_force_uppercase जोड़ें;
3 प्रयासों के बाद समाधान उपलब्ध है
सेंसर को मार डालो! कभी-कभी हम शोर-शराबे वाले ऑडिट को दरकिनार करते हुए कच्ची बीज फ़ाइलों या अस्थायी मूल परिवर्तनों को आगे बढ़ाना चाहते हैं।\nट्रिगर को छोड़ना अविश्वसनीय रूप से सरल है (आप ऑर्गेनिक फ़ंक्शन को नहीं हटाते हैं, आप केवल सेंसर बाइंडिंग को हटाते हैं)।\nनाम और वैश्विक अनुलग्नक को निर्दिष्ट करते हुए 'ड्रॉप ट्रिगर' कीवर्ड का उपयोग करें।
संकेत दिखाएँ
यह निर्दिष्ट करना याद रखें कि कहां से। ग्राहकों पर ड्रॉप ट्रिगर trg_force_uppercase;
3 प्रयासों के बाद समाधान उपलब्ध है