triggers pl sql tutorial with example programs
PL SQL में ट्रिगर के बारे में सभी जानें, उनके प्रकार, उपयोग और फायदे:
में पीएल एसक्यूएल लेनदेन का ट्यूटोरियल PL / SQL श्रृंखला , हमने COMMIT, ROLLBACK, और SAVEPOINTS कथनों के बारे में सीखा है।
इस लेख में, हम PL SQL और उनके फायदे, प्रकार और उपयोग में ट्रिगर का पता लगाएंगे। हम उदाहरण कार्यक्रमों की सहायता से PL / SQL ट्रिगर बनाने, ट्रिगर करने, सक्षम करने और अक्षम करने के बारे में चर्चा करेंगे।
चर्चा के साथ शुरू करते हैं !!
आप क्या सीखेंगे:
PL / SQL में ट्रिगर
एक संग्रहीत प्रोग्राम जिसे डिफ़ॉल्ट रूप से या कुछ घटनाओं द्वारा निकाल दिया जाता है, उसे ट्रिगर कहा जाता है।
नीचे सूचीबद्ध परिस्थितियों के कारण ट्रिगर निष्पादित किया जाता है:
- DROP, ALTER, या CREATE जैसे DDL (डेटा डेफिनिशन लैंग्वेज) स्टेटमेंट द्वारा।
- UPDATE, INSERT, या DELETE जैसे DML (डेटा हेरफेर भाषा) स्टेटमेंट द्वारा।
- SHUTDOWN, STARTUP, LOGOFF और LOGON जैसी डेटाबेस क्रिया द्वारा।
एक ट्रिगर को स्कीमा, व्यू, या डेटाबेस पर सेट किया जा सकता है जिसमें कोई ईवेंट संलग्न है।
ट्रिगर के लाभ
ये नीचे सूचीबद्ध हैं:
- संदर्भात्मक अखंडता को लागू करने की क्षमता।
- निगरानी की क्षमता।
- तालिकाओं तक पहुँचने पर डेटा को लॉग और होल्ड करने की क्षमता।
- लेनदेन को रोकने की क्षमता जो मान्य नहीं हैं।
- सुरक्षा सुविधाओं को लागू करने की क्षमता।
- डिफ़ॉल्ट रूप से व्युत्पन्न स्तंभ मान बनाने की क्षमता।
ट्रिगर के Usages
ये नीचे सूचीबद्ध हैं:
- अनुचित लेनदेन को रोकता है।
- तालिका उपयोग पर जानकारी संचित करता है।
- महत्वपूर्ण जानकारी की निगरानी करें।
PL / SQL में ट्रिगर के प्रकार
ट्रिगर को मापदंडों के आधार पर वर्गीकृत किया जा सकता है। ट्रिगर्स के प्रकार नीचे सूचीबद्ध हैं:
(1) ट्रिगर स्तर पर वर्गीकरण।
- निम्न स्तर ट्रिगर: यह प्रत्येक रिकॉर्ड के लिए निष्पादित हो जाता है जिसे डीएमएल स्टेटमेंट द्वारा अपडेट किया गया है।
- स्थिति स्तर ट्रिगर: यह केवल एक बार ईवेंट स्टेटमेंट द्वारा निष्पादित हो जाता है।
# 2) ट्रिगर समय पर वर्गीकरण।
- पहले से ट्रिगर: यह उस विशिष्ट घटना से पहले निष्पादित हो जाता है जो जगह ले चुका है।
- ट्रिगर के बाद: यह उस विशिष्ट घटना को अंजाम देता है जो हुई है।
- ट्रिगर का INSTEAD: यह एक विशेष प्रकार का ट्रिगर है और इसे प्रत्येक रिकॉर्ड के लिए निष्पादित किया जाता है जिसे डीएमएल स्टेटमेंट द्वारा अपडेट किया गया है।
# 3) ट्रिगर इवेंट का वर्गीकरण।
- DML ट्रिगर: अगर UPDATE, INSERT या DELETE जैसे DML इवेंट को निष्पादित किया जाता है, तो यह निष्पादित हो जाता है।
- DDL ट्रिगर: यदि DROP, ALTER, या CREATE जैसे DDL ईवेंट निष्पादित किया जाता है, तो इसे निष्पादित किया जाता है।
- DATABASE ट्रिगर: अगर डेटाबेस डेटाबेस जैसे SHUTDOWN, STARTUP, LOGOFF और लॉगऑन हो तो यह निष्पादित हो जाता है।
ट्रिगर बनाएँ
ट्रिगर बनाने के लिए सिंटैक्स:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
यहाँ,
- बनाएँ (या प्रतिक्रिया) ट्रिगर ट्रिगर_n - यह ट्रिगर बनाने, बदलने या अपडेट करने के लिए है, जिसका नाम है ट्रिगर_ एन।
- उपरांत - यह उस समय को निर्धारित करने के लिए है जब ट्रिगर को निकाल दिया जाएगा। INSTEAD OF एक ट्रिगर बनाने के लिए है जिसमें एक दृश्य है।
- DELETE - यह डीएमएल कार्यों को निष्पादित करने के लिए है।
- (कॉलम_ एन) - यह उस स्तंभ नाम का उल्लेख करने के लिए है जिसे संशोधित किया जाएगा।
- (टेबल_एन पर) - यह तालिका के नाम का उल्लेख करने के लिए है जो ट्रिगर से जुड़ा हुआ है।
- (REFERENCING OLD AS o NEW AS n) - यह डीएमएल स्टेटमेंट जैसे UPDATE, INSERT या DELETE द्वारा पुराने और नए मूल्यों का उल्लेख करने के लिए है।
- (प्रत्येक दौड़ के लिए) - यह एक पंक्ति-स्तर ट्रिगर को निर्धारित करता है, अर्थात, प्रत्येक पंक्ति के लिए ट्रिगर को निकाल दिया जाएगा जो संशोधित है, अन्यथा SQL कथन निष्पादित होने पर ट्रिगर केवल एक बार फायर करेगा, जिसे टेबल स्तर ट्रिगर के रूप में जाना जाता है।
- जब (स्थिति) - यह उन पंक्तियों के लिए एक शर्त देता है जिसके लिए ट्रिगर निष्पादित किया जाएगा। यह केवल पंक्ति-स्तरीय ट्रिगर्स के लिए लागू है।
आइए हम फिर से एक तालिका पर विचार करें जिसका नाम है छात्र ।
आइए अब हम उस तालिका के लिए एक पंक्ति-स्तरीय ट्रिगर बनाएँ, जो उस तालिका पर अद्यतन, INSERT या DELETE जैसे DML कथन द्वारा निष्पादित होगी। ट्रिगर वर्तमान और पिछले मूल्यों के बीच उम्र के अंतर की गणना करेगा और दिखाएगा।
ट्रिगर निर्माण के लिए कोड कार्यान्वयन:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
उपरोक्त कोड का आउटपुट:
उपरोक्त कोड में कुछ महत्वपूर्ण विशेषताएं हैं। वे नीचे सूचीबद्ध हैं:
- तालिका स्तर ट्रिगर के लिए, OLD और NEW पते उपलब्ध नहीं हैं। हम रिकॉर्ड स्तर के ट्रिगर के लिए इन संदर्भों का उपयोग कर सकते हैं।
- यदि हम एक ही ट्रिगर में एक और क्वेरी लागू करना चाहते हैं, तो हमें एक ट्रिगर के रूप में कीवर्ड AFTER का उपयोग करने की आवश्यकता है जो पिछले संशोधनों को ठीक से लागू करने के बाद ही एक तालिका को फिर से संशोधित कर सकता है।
- उपरोक्त चर्चा किसी भी DELETE, अद्यतन, या तालिका पर INSERT कार्रवाई से पहले निष्पादित की जा रही है। हालाँकि, हम एक ट्रिगर भी डिजाइन कर सकते हैं जो एक ही ऑपरेशन पर निकाल दिया जाता है ( उदाहरण के लिए, जब भी कोई रिकॉर्ड तालिका में INSERT ऑपरेशन की मदद से डाला जाता है, तो ट्रिगर निष्पादित करें)।
पीएल SQL में ट्रिगर ट्रिगर
उपरोक्त ट्रिगर को फायर करने के लिए, हमें टेबल पर DELETE, INSERT या UPDATE जैसे किसी भी DML ऑपरेशन को करने की आवश्यकता है। नीचे दी गई क्वेरी की सहायता से फिर से स्टूडेंट टेबल में कुछ मान डालें:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
छात्र तालिका में INSERT ऑपरेशन पूरा हो जाने के बाद, ट्रिगर age_changes निष्पादित हो जाता है।
क्वेरी कोड का आउटपुट:
चूंकि एक नया रिकॉर्ड बनाया गया है और पिछली उम्र अनुपलब्ध है, पिछली उम्र और आयु में अंतर अभिकलन उपरोक्त आउटपुट में अशक्त के रूप में आता है।
अब, आइए नीचे दिए गए क्वेरी की सहायता से अद्यतन अद्यतन के साथ एक रिकॉर्ड को संशोधित करें:
UPDATE student SET age = age + 1 WHERE code = 7;
स्टूडेंट टेबल में UPDATE ऑपरेशन पूरा होने के बाद ट्रिगर age_changes निष्पादित हो जाता है।
उपरोक्त क्वेरी का आउटपुट:
नई और पुराने खंड
ट्रिगर निष्पादन के लिए तालिका के स्तंभों के लिए नए मान को संग्रहीत करने के लिए एक नया क्लॉज का उपयोग किया जाता है। इसका उपयोग रिकॉर्ड स्तर के ट्रिगर्स में किया जाता है। ट्रिगर निष्पादन के लिए तालिका के स्तंभों के लिए पुराने मान को संग्रहीत करने के लिए एक पुराने खंड का उपयोग किया जाता है। इसका उपयोग रिकॉर्ड स्तर के ट्रिगर्स में भी किया जाता है।
इस प्रकार नए और पुराने क्लॉज का उपयोग ट्रिगर बॉडी के भीतर नए और पुराने मूल्यों को पकड़ने और संदर्भित करने के लिए किया जाता है।
कम्पाउंड ट्रिगर
एक कंपाउंड ट्रिगर का उपयोग ट्रिगर बॉडी के भीतर सभी समय बिंदुओं के संचालन को परिभाषित करने के लिए किया जाता है। यह एक ट्रिगर बॉडी के भीतर सभी कार्यों को अलग-अलग समय पर मर्ज करने का प्रावधान देता है।
विभिन्न समय बिंदुओं को नीचे सूचीबद्ध किया गया है:
- पैटर्न स्तर के बाद
- स्तर से कम है
- स्तर के बाद
- पहले के स्तर
अक्षम करें और ट्रिगर सक्षम करें
हम DDL स्टेटमेंट ALTER की मदद से एक ट्रिगर को सक्षम और अक्षम कर सकते हैं।
वाक्य - विन्यास:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
यहां, ट्रिगर_ एन उस ट्रिगर का नाम है जिसे हम सक्षम या अक्षम करना चाहते हैं।
अब नीचे की क्वेरी की मदद से ट्रिगर को निष्क्रिय करते हैं:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
क्वेरी कोड का आउटपुट:
अब निम्न क्वेरी की सहायता से उसी ट्रिगर को सक्षम करते हैं:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
क्वेरी कोड का आउटपुट:
अक्सर पूछे जाने वाले प्रश्न और उत्तर
Q # 1) PL SQL में कितने प्रकार के ट्रिगर्स मौजूद हैं?
उत्तर: PL / SQL में दो प्रकार के ट्रिगर्स होते हैं। वे रो-लेवल ट्रिगर और स्टेटमेंट-लेवल ट्रिगर हैं।
Q # 2) किस प्रकार का ट्रिगर पुराने और नए क्वालीफायर का उपयोग करता है?
Android के लिए शीर्ष एमपी 3 संगीत डाउनलोड
उत्तर: पुराने और नए क्वालीफायर का उपयोग केवल पंक्ति-स्तरीय ट्रिगर्स के साथ किया जा सकता है। वे बयान स्तर के ट्रिगर के साथ संगत नहीं हैं।
Q # 3) नए और ट्रिगर पुराने के बीच अंतर क्या है?
उत्तर: एक नया ट्रिगर रिकॉर्ड ऑब्जेक्ट्स के नए संस्करणों की एक सूची देता है। एक पुराना ट्रिगर रिकॉर्ड ऑब्जेक्ट्स के पुराने संस्करणों की एक सूची देता है।
Q # 4) PL SQL में रो-लेवल ट्रिगर क्या है?
उत्तर: एक पंक्ति-स्तर ट्रिगर केवल एक घटना के कारण एक पंक्ति के लिए ट्रिगर हो जाता है। उदाहरण के लिए, यदि विलोपन को एक तालिका के लिए ट्रिगरिंग घटना के रूप में माना जाता है, तो हटाए गए कथन को दो पंक्तियों को प्रभावित कर रहा है, तो ट्रिगर को दो बार निकाल दिया जाएगा।
Q # 5) ट्रिगर क्या है? एक उदाहरण से समझाएं।
उत्तर: ट्रिगर एक संग्रहीत प्रक्रिया है जो डेटाबेस में कोई घटना होने पर डिफ़ॉल्ट रूप से निकाल दी जाती है। उदाहरण के लिए, यदि कोई पंक्ति किसी तालिका में डाली गई है या हम तालिका में कुछ मानों को संशोधित कर रहे हैं।
Q # 6) ट्रिगर्स के बाद क्या हैं?
उत्तर: बाद के ट्रिगर्स को डीएमएल स्टेटमेंट के निष्पादन के बाद निकाल दिया जाता है, लेकिन डेटाबेस के लिए प्रतिबद्ध होने से पहले। यह अपनी कार्रवाई को वापस करने में भी सक्षम है।
निष्कर्ष
इस ट्यूटोरियल में, हमने PL SQL में ट्रिगर्स की कुछ बुनियादी अवधारणाओं पर चर्चा की है जो प्रोग्रामिंग करते समय उनका उपयोग करना आवश्यक है। हमने नीचे सूचीबद्ध निम्नलिखित विषयों को कवर किया है:
- ट्रिगर।
- ट्रिगर के प्रकार।
- ट्रिगर्स पर विभिन्न ऑपरेशन।
<< PREV Tutorial | अगला ट्यूटोरियल >>