SQL में एक ट्रिगर एक प्रक्रियात्मक कोड होता है जो एक निर्दिष्ट टेबल पर कुछ घटनाओं के जवाब में स्वचालित रूप से निष्पादित होता है। यह समझना महत्वपूर्ण है कि कैसे ये छोटे कोड डेटाबेस के प्रदर्शन में इतना बड़ा अंतर लाते हैं। इस लेख में, आप उदाहरणों के साथ ट्रिगर्स को लागू करने का तरीका जानेंगे।
निम्न विषयों को इस लेख में शामिल किया जाएगा:
- ट्रिगर क्या है?
- वाक्यविन्यास और उदाहरण
- ट्रिगर में ऑपरेशन
- लाभ और नुकसान
ट्रिगर क्या है?
ट्रिगर SQL कोड होते हैं जो किसी विशेष टेबल पर कुछ घटनाओं के जवाब में स्वचालित रूप से निष्पादित होते हैं। इनका उपयोग डेटा की अखंडता को बनाए रखने के लिए किया जाता है। SQL में एक ट्रिगर वास्तविक दुनिया के ट्रिगर के समान काम करता है। उदाहरण के लिए, जब बंदूक का ट्रिगर खींचा जाता है तो गोली चलाई जाती है। हम सभी यह जानते हैं, लेकिन यह SQL में ट्रिगर्स से कैसे संबंधित है? इसे समझने के लिए आइए एक काल्पनिक स्थिति पर विचार करें।
जॉन एक कंपनी में मार्केटिंग ऑफिसर है। जब कंपनी के डेटाबेस में एक नया ग्राहक डेटा दर्ज किया जाता है तो उसे प्रत्येक नए ग्राहक को स्वागत संदेश भेजना होता है। यदि यह एक या दो ग्राहक हैं तो जॉन इसे मैन्युअल रूप से कर सकता है, लेकिन क्या होगा यदि गिनती एक हजार से अधिक हो? ऐसे में ट्रिगर्स काम आते हैं।
इस प्रकार, अब जॉन आसानी से एक ट्रिगर बना सकता है जो डेटाबेस में डेटा दर्ज होने के बाद नए ग्राहकों को स्वचालित रूप से एक स्वागत ईमेल भेजेगा। तो मुझे आशा है कि आप SQL में ट्रिगर्स की शुरूआत के साथ स्पष्ट हैं।
हमेशा याद रखें कि एक टेबल के लिए समान क्रिया समय और घटना के साथ दो ट्रिगर नहीं हो सकते। उदाहरण के लिए, हमारे पास किसी तालिका के लिए अद्यतन से पहले दो ट्रिगर नहीं हो सकते हैं। लेकिन हमारे पास अपडेट से पहले . हो सकता है और एक इन्सर्ट करने से पहले ट्रिगर, या अपडेट से पहले और एक अपडेट के बाद ट्रिगर।
इससे पहले कि हम ट्रिगर्स के मूल सिद्धांतों में आगे बढ़ें, मैं आपको SQL बेसिक्स और नॉर्मलाइज़ेशन की अवधारणाओं को समझने का सुझाव दूंगा ताकि आप SQL में ट्रिगर्स पर बेहतर पकड़ बना सकें।
वाक्यविन्यास और उदाहरण
आइए अब एक ट्रिगर के सिंटैक्स को देखें।
Create Trigger Trigger_Name (Before | After) [ Insert | Update | Delete] on [Table_Name] [ for each row | for each column ] [ trigger_body ]
अब मैं इस सिंटैक्स को तोड़ता हूं और प्रत्येक भाग को विस्तार से समझाता हूं।
- ट्रिगर बनाएं
इन दो खोजशब्दों का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि एक ट्रिगर ब्लॉक घोषित किया जा रहा है। - Trigger_Name
यह ट्रिगर का नाम निर्दिष्ट करता है। ट्रिगर नाम अद्वितीय होना चाहिए और दोहराया नहीं जाना चाहिए। - ( पहले | . के बाद <मजबूत>)
यह निर्दिष्ट करता है कि ट्रिगर कब निष्पादित किया जाएगा। यह हमें उस समय के बारे में बताता है जिस पर ट्रिगर शुरू किया जाता है, यानी या तो चल रही घटना से पहले या बाद में।
- ट्रिगर से पहले डेटाबेस में सहेजे जाने से पहले रिकॉर्ड मानों को अद्यतन या मान्य करने के लिए उपयोग किया जाता है।
- ट्रिगर के बाद सिस्टम द्वारा निर्धारित फ़ील्ड मानों तक पहुँचने और अन्य रिकॉर्ड्स में परिवर्तन को प्रभावित करने के लिए उपयोग किया जाता है। आफ्टर ट्रिगर को सक्रिय करने वाले रिकॉर्ड केवल-पढ़ने के लिए हैं। अगर हम किसी रिकॉर्ड को अपडेट करना चाहते हैं तो हम आफ्टर ट्रिगर का उपयोग नहीं कर सकते क्योंकि इससे केवल-पढ़ने में त्रुटि होगी।
- [ सम्मिलित करें | अद्यतन | हटाएं ]
ये DML ऑपरेशन हैं और हम किसी दिए गए ट्रिगर में इनमें से किसी एक का उपयोग कर सकते हैं। - पर [ Table_Name <मजबूत>]
हमें उस तालिका के नाम का उल्लेख करना होगा जिस पर ट्रिगर लागू किया जा रहा है। चालू . का उपयोग करना न भूलें कीवर्ड और यह भी सुनिश्चित करें कि चयनित तालिका डेटाबेस में मौजूद है। - [ प्रत्येक पंक्ति के लिए | प्रत्येक कॉलम के लिए ]
-
- पंक्ति-स्तरीय ट्रिगर पंक्ति के किसी भी स्तंभ मान के पहले या बाद में निष्पादित हो जाता है परिवर्तन
- कॉलम लेवल ट्रिगर निर्दिष्ट कॉलम . के पहले या बाद में निष्पादित होता है परिवर्तन
- [ ट्रिगर_बॉडी]
इसमें ऐसे प्रश्न होते हैं जिन्हें ट्रिगर कॉल करने पर निष्पादित करने की आवश्यकता होती है।
तो यह सब एक साधारण ट्रिगर के बारे में था। लेकिन हम एक नेस्टेड ट्रिगर भी बना सकते हैं जो मल्टी-प्रोसेस कर सकता है। साथ ही इसे संभालना और सही समय पर इसे खत्म करना भी बहुत जरूरी है। यदि हम ट्रिगर को ठीक से समाप्त नहीं करते हैं तो इससे अनंत लूप हो सकता है।
आप सोच रहे होंगे कि हम किस परिदृश्य में नेस्टेड ट्रिगर का उपयोग कर सकते हैं। आपको एक अनुरूप उत्तर देने के बजाय मैं आपके साथ एक परिदृश्य साझा करता हूं, जो आपको नेस्टेड ट्रिगर को बेहतर तरीके से समझने में मदद करेगा। पहले के परिदृश्य को जारी रखते हुए, जॉन ने कंपनी के डेटाबेस में जोड़े गए प्रत्येक नए ग्राहक के लिए एक ईमेल भेजा। अब, क्या होगा यदि वह उन ग्राहकों की संख्या पर नज़र रखना चाहता है जिन्हें ईमेल भेजा गया था? अब जॉन को ईमेल भेजने के साथ-साथ गिनती का ट्रैक रखने के लिए एक नेस्टेड ट्रिगर बनाने की आवश्यकता है।
तो यह सब ट्रिगर्स के सिंटैक्स के बारे में था, आइए अब SQL में ट्रिगर्स के उदाहरण को लागू करने का प्रयास करें।
ट्रिगर के लिए उदाहरण:
नीचे दिए गए ट्रिगर में, जैसे ही छात्र का विवरण डेटाबेस में अपडेट किया जाता है, हम उसके प्रतिशत की गणना करने का प्रयास कर रहे हैं।
CREATE TRIGGER sample_trigger before INSERT ON student FOR EACH ROW SET new.total = new.marks/6;
यहां "नया" कीवर्ड उस पंक्ति को संदर्भित करता है जो प्रभावित हो रही है।
ट्रिगर में संचालन
हम ट्रिगर्स का उपयोग करके कई ऑपरेशन कर सकते हैं। कुछ सरल हो सकते हैं और कुछ थोड़े जटिल हो सकते हैं, लेकिन एक बार यदि हम इस प्रश्न को पढ़ लें तो इसे समझना आसान हो जाता है।
- एक ट्रिगर छोड़ें
DROP TRIGGER trigger name;
- एक ट्रिगर प्रदर्शित करें
नीचे दिया गया कोड उन सभी ट्रिगर्स को प्रदर्शित करेगा जो मौजूद हैं।
SHOW TRIGGERS;
नीचे दिया गया कोड उन सभी ट्रिगर्स को प्रदर्शित करेगा जो किसी विशेष डेटाबेस में मौजूद हैं।
SHOW TRIGGERS IN database_name;
उदाहरण:
SHOW TRIGGERS IN edureka;
उपरोक्त उदाहरण में, एडुरेका नाम के डेटाबेस में मौजूद सभी ट्रिगर प्रदर्शित होंगे।
हम ट्रिगर्स के कुछ प्रमुख वेरिएंट्स को भी देखते हैं जो इन्सर्ट से पहले और इन्सर्ट के बाद हैं। हम उदाहरण में पहले ही एक ट्रिगर देख चुके हैं। लेकिन तालिका की सहायता से देखते हैं कि यह वास्तव में कैसे काम करता है।
जैसा कि हम पहले ही समझ चुके हैं कि ट्रिगर कैसे बनाया जाता है, अब आइए ट्रिगर के दो प्रकारों को समझते हैं जो इंसर्ट से पहले और इंसर्ट के बाद हैं। उन्हें लागू करने के लिए, आइए नीचे दिखाए गए अनुसार विभिन्न स्तंभों के साथ एक छात्र तालिका बनाएं:
CREATE TABLE Student( studentID INT NOT NULL AUTO_INCREMENT, FName VARCHAR(20), LName VARCHAR(20), Address VARCHAR(30), City VARCHAR(15), Marks INT, PRIMARY KEY(studentID) );
अब यदि हम इस क्वेरी को निष्पादित करते हैं तो हमें निम्न तालिका प्राप्त होती है।
आइए पहले संस्करण का उपयोग करने का प्रयास करें, अर्थात सम्मिलित करने से पहले
CREATE TRIGGER calculate before INSERT ON student FOR EACH ROW SET new.marks = new.marks+100;
यहां जब हम छात्र तालिका में डेटा डालते हैं तो स्वचालित रूप से ट्रिगर लागू हो जाएगा। ट्रिगर छात्र कॉलम में अंक कॉलम में 100 जोड़ देगा।
अब दूसरे संस्करण का उपयोग करते हैं, अर्थात बाद में सम्मिलित करें
इस प्रकार का उपयोग करने के लिए हमें एक और तालिका की आवश्यकता है, यानी प्रतिशत जहां ट्रिगर परिणामों को संग्रहीत करेगा। प्रतिशत तालिका बनाने के लिए नीचे दिए गए कोड का उपयोग करें।
create table Final_mark( per int );
अब हम आफ्टर इंसर्ट ट्रिगर का उपयोग करते हैं
CREATE TRIGGER total_mark after insert ON student FOR EACH ROW insert into Final_mark values(new.marks);
यहां जब हम टेबल में डेटा डालते हैं, total_mark ट्रिगर परिणाम को Final_mark तालिका में संग्रहीत करेगा।
यह सब ट्रिगर्स पर ऑपरेशन के बारे में था, अब आगे बढ़ते हैं और इसके फायदे और नुकसान को देखते हैं।
ट्रिगर के फायदे और नुकसान
फायदे
- जबरन सुरक्षा डेटाबेस में मौजूद टेबल पर स्वीकृतियां
- ट्रिगर डेटा की सत्यता की जांच करने का एक और तरीका प्रदान करते हैं
- अमान्य प्रतिकार करना एक्सचेंज
- ट्रिगर त्रुटियों को संभालें डेटाबेस परत से
- आम तौर पर ट्रिगर डेटा की जांच करने के लिए उपयोगी हो सकते हैं तालिकाओं में परिवर्तन
- ट्रिगर sनिर्धारित कार्यों को चलाने का एक वैकल्पिक तरीका प्रदान करते हैं . ट्रिगर्स का उपयोग करते हुए, हमें शेड्यूल किए गए ईवेंट के चलने का इंतज़ार नहीं करना पड़ता है क्योंकि ट्रिगर्स को टेबल में डेटा में बदलाव करने से पहले या बाद में स्वचालित रूप से लागू किया जाता है
नुकसान s
- ट्रिगर केवल विस्तारित सत्यापन प्रदान कर सकते हैं , यानी, सभी प्रकार के सत्यापन नहीं। सरल सत्यापन के लिए, आप NOT NULL, UNIQUE, CHECK और FOREIGN KEY बाधाओं का उपयोग कर सकते हैं
- ट्रिगर ओवरहेड बढ़ा सकते हैं डेटाबेस का
- ट्रिगर मुश्किल हो सकता है समस्या निवारण क्योंकि वे डेटाबेस में स्वचालित रूप से निष्पादित होते हैं, जो क्लाइंट अनुप्रयोगों के लिए अदृश्य नहीं हो सकता है
यह हमें SQL आलेख में इस ट्रिगर के अंत में लाता है। मुझे आशा है कि आप ट्रिगर की अवधारणा को समझ गए होंगे।
यदि आप MySQL के बारे में अधिक जानना चाहते हैं और इस ओपन-सोर्स रिलेशनल डेटाबेस को जानना चाहते हैं, तो हमारे MySQL DBA प्रमाणन प्रशिक्षण को देखें जो प्रशिक्षक के नेतृत्व वाले लाइव प्रशिक्षण और वास्तविक के साथ आता है -जीवन परियोजना का अनुभव। यह प्रशिक्षण आपको MySQL को गहराई से समझने और विषय पर महारत हासिल करने में मदद करेगा।
हमारे लिए एक प्रश्न है? कृपया SQL में इस ट्रिगर के टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपसे संपर्क करेंगे।