PostgreSQL ट्रिगर्स: उदाहरण के साथ बनाएँ, सूचीबद्ध करें और छोड़ें
⚡ स्मार्ट सारांश
PostgreSQL ट्रिगर ऐसे फ़ंक्शन होते हैं जो किसी टेबल पर INSERT, UPDATE या DELETE इवेंट होने पर स्वचालित रूप से चलते हैं, जिससे डेटाबेस अतिरिक्त एप्लिकेशन कोड के बिना नियमों को लागू कर सकता है, परिवर्तनों को लॉग कर सकता है और डेटा का ऑडिट कर सकता है।
ट्रिगर क्या है? PostgreSQL?
A PostgreSQL ट्रिगर यह एक ऐसा फ़ंक्शन है जो डेटाबेस ऑब्जेक्ट, जैसे कि टेबल, पर कोई डेटाबेस इवेंट होने पर स्वचालित रूप से सक्रिय हो जाता है। INSERT, UPDATE, DELETE आदि डेटाबेस इवेंट्स ट्रिगर को सक्रिय कर सकते हैं। इसके अलावा, जब आप किसी टेबल के लिए ट्रिगर बनाते हैं, तो उस टेबल के डिलीट होने पर ट्रिगर स्वचालित रूप से हट जाता है।
ट्रिगर का उपयोग कैसे किया जाता है? PostgreSQL?
ट्रिगर बनाते समय उसे FOR EACH ROW ऑपरेटर से चिह्नित किया जा सकता है। इस तरह का ट्रिगर ऑपरेशन द्वारा संशोधित प्रत्येक पंक्ति के लिए एक बार कॉल किया जाएगा। ट्रिगर बनाते समय उसे FOR EACH STATEMENT ऑपरेटर से भी चिह्नित किया जा सकता है। यह ट्रिगर किसी विशिष्ट ऑपरेशन के लिए केवल एक बार निष्पादित होगा।
PostgreSQL ट्रिगर बनाएं
ट्रिगर बनाने के लिए, हम CREATE TRIGGER फ़ंक्शन का उपयोग करते हैं। फ़ंक्शन का सिंटैक्स इस प्रकार है:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
ट्रिगर-नाम ट्रिगर का नाम है।
BEFORE, AFTER और INSTEAD OF वे कीवर्ड हैं जो यह निर्धारित करते हैं कि ट्रिगर कब लागू किया जाएगा।
इवेंट-नाम उस इवेंट का नाम है जिसके कारण ट्रिगर को बुलाया जाएगा। इसे इस प्रकार लिखा जा सकता है: सम्मिलित करें, अद्यतन करें, हटाएं, आदि।
तालिका-नाम उस तालिका का नाम है जिस पर ट्रिगर बनाया जाना है।
यदि INSERT ऑपरेशन के लिए ट्रिगर बनाया जाना है, तो हमें ON कॉलम-नाम पैरामीटर जोड़ना होगा।
निम्नलिखित वाक्यविन्यास इसे प्रदर्शित करता है:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL ट्रिगर उदाहरण बनाएँ
हम नीचे दी गई मूल्य तालिका का उपयोग करेंगे:
मूल्य:
आइए एक और तालिका बनाएं, Price_Audits, जहां हम Price तालिका में किए गए परिवर्तनों को लॉग करेंगे:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
अब हम ऑडिटफ़ंक्शन नामक एक नया फ़ंक्शन परिभाषित कर सकते हैं:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
उपरोक्त फ़ंक्शन Price_Audits तालिका में नई पंक्ति आईडी और रिकॉर्ड बनाने के समय सहित एक रिकॉर्ड सम्मिलित करेगा।
अब जबकि हमारे पास ट्रिगर फ़ंक्शन है, हमें इसे अपनी प्राइस टेबल से जोड़ना चाहिए। हम ट्रिगर को price_trigger नाम देंगे। नया रिकॉर्ड बनने से पहले, ट्रिगर फ़ंक्शन स्वचालित रूप से परिवर्तनों को लॉग करने के लिए सक्रिय हो जाएगा। ट्रिगर इस प्रकार है:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
आइए मूल्य तालिका में एक नया रिकॉर्ड डालें:
INSERT INTO Price VALUES (3, 400);
अब जबकि हमने Price टेबल में एक रिकॉर्ड डाल दिया है, हमारे द्वारा बनाए गए ट्रिगर के कारण Price_Audits टेबल में भी एक रिकॉर्ड डाला जाना चाहिए। आइए इसकी जाँच करते हैं:
SELECT * FROM Price_Audits;
इससे निम्नलिखित परिणाम प्राप्त होंगे:
ट्रिगर सफलतापूर्वक काम किया.
PostgreSQL सूची ट्रिगर
आपके द्वारा बनाए गए सभी ट्रिगर्स PostgreSQL pg_trigger टेबल में संग्रहीत हैं। आपके पास मौजूद ट्रिगर्स की सूची देखने के लिए डेटाबेसनीचे दिखाए अनुसार SELECT कमांड चलाकर तालिका को क्वेरी करें:
SELECT tgname FROM pg_trigger;
यह निम्नलिखित लौटाता है:
pg_trigger तालिका का tgname कॉलम ट्रिगर का नाम दर्शाता है।
PostgreSQL ड्रॉप ट्रिगर
जब किसी ट्रिगर की आवश्यकता नहीं रह जाती है, तो आप उसे आसानी से हटा सकते हैं। किसी ट्रिगर को हटाने के लिए... PostgreSQL ट्रिगर के लिए, हम निम्नलिखित सिंटैक्स के साथ DROP TRIGGER कथन का उपयोग करते हैं:
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
ट्रिगर-नाम पैरामीटर उस ट्रिगर का नाम दर्शाता है जिसे हटाया जाना है।
तालिका-नाम उस तालिका का नाम दर्शाता है जिससे ट्रिगर को हटाया जाना है।
IF EXISTS क्लॉज मौजूद ट्रिगर को हटाने का प्रयास करता है। यदि आप IF EXISTS क्लॉज का उपयोग किए बिना किसी ऐसे ट्रिगर को हटाने का प्रयास करते हैं जो मौजूद नहीं है, तो आपको एक त्रुटि मिलेगी।
CASCADE विकल्प आपको ट्रिगर पर निर्भर सभी ऑब्जेक्ट्स को स्वचालित रूप से हटाने में मदद करेगा।
यदि आप RESTRICT विकल्प का उपयोग करते हैं, तो यदि ऑब्जेक्ट इस पर निर्भर हैं तो ट्रिगर हटाया नहीं जाएगा।
उदाहरण के लिए:
कंपनी टेबल पर example_trigger नामक ट्रिगर को हटाने के लिए, निम्नलिखित कमांड चलाएँ:
DROP TRIGGER example_trigger IF EXISTS
ON Company;
pgAdmin का उपयोग करना
अब आइए देखते हैं कि pgAdmin का उपयोग करके ये तीनों क्रियाएं कैसे की जाती हैं।
ट्रिगर कैसे बनाएं? PostgreSQL pgAdmin का उपयोग करके
यहां बताया गया है कि आप ट्रिगर कैसे बना सकते हैं। PostgreSQL pgAdmin का उपयोग करके:
चरण 1) अपने pgAdmin खाते में लॉगिन करें
pgAdmin खोलें और अपने क्रेडेंशियल का उपयोग करके अपने खाते में लॉग इन करें।
चरण 2) एक डेमो डेटाबेस बनाएं
- बाईं ओर स्थित नेविगेशन बार से, डेटाबेस पर क्लिक करें।
- डेमो पर क्लिक करें.
चरण 3) क्वेरी टाइप करें
Price_Audits टेबल बनाने के लिए, एडिटर में यह क्वेरी टाइप करें:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
चरण 4) क्वेरी निष्पादित करें
निष्पादित करें बटन पर क्लिक करें.
चरण १) चलाएँ Code ऑडिट फ़ंक्शन के लिए
ऑडिटफ़ंक्शन को परिभाषित करने के लिए निम्नलिखित कोड चलाएँ:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
चरण १) चलाएँ Code ट्रिगर बनाने के लिए
ट्रिगर price_trigger बनाने के लिए निम्नलिखित कोड चलाएँ:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
चरण 7) नया रिकॉर्ड डालें
- मूल्य तालिका में नया रिकॉर्ड सम्मिलित करने के लिए निम्नलिखित कमांड चलाएँ:
INSERT INTO Price VALUES (3, 400)
- यह जाँचने के लिए कि क्या Price_Audits तालिका में कोई रिकॉर्ड डाला गया था, निम्नलिखित कमांड चलाएँ:
SELECT * FROM Price_Audits
इसे निम्नलिखित वापस करना चाहिए:
चरण 8) तालिका सामग्री की जाँच करें
आइए Price_Audits टेबल की सामग्री की जांच करें।
pgAdmin का उपयोग करके लिस्टिंग ट्रिगर्स
चरण 1) अपने डेटाबेस में ट्रिगर्स की जांच करने के लिए निम्नलिखित कमांड चलाएँ:
SELECT tgname FROM pg_trigger
यह निम्नलिखित लौटाता है:
बूंदping pgAdmin का उपयोग करके ट्रिगर करना
कंपनी टेबल पर example_trigger नामक ट्रिगर को हटाने के लिए, निम्नलिखित कमांड चलाएँ:
DROP TRIGGER example_trigger IF EXISTS
ON Company
इस ट्यूटोरियल में प्रयुक्त डेटाबेस डाउनलोड करें








