PostgreSQL ट्रिगर्स: उदाहरण के साथ बनाएँ, सूचीबद्ध करें और छोड़ें

⚡ स्मार्ट सारांश

PostgreSQL ट्रिगर ऐसे फ़ंक्शन होते हैं जो किसी टेबल पर INSERT, UPDATE या DELETE इवेंट होने पर स्वचालित रूप से चलते हैं, जिससे डेटाबेस अतिरिक्त एप्लिकेशन कोड के बिना नियमों को लागू कर सकता है, परिवर्तनों को लॉग कर सकता है और डेटा का ऑडिट कर सकता है।

  • ⚡ परिभाषा: ट्रिगर एक ऐसा फ़ंक्शन है जो डेटाबेस में INSERT, UPDATE या DELETE जैसी किसी घटना के होने पर स्वचालित रूप से सक्रिय हो जाता है।
  • 🔁 दायरा: FOR EACH ROW ट्रिगर को प्रभावित प्रत्येक पंक्ति के लिए एक बार चलाता है, जबकि FOR EACH STATEMENT इसे प्रत्येक ऑपरेशन के लिए एक बार चलाता है।
  • ️ सर्जन करना: CREATE TRIGGER एक फ़ंक्शन को एक टेबल से जोड़ता है और BEFORE, AFTER, या INSTEAD OF टाइमिंग सेट करता है।
  • ???? सूची: डेटाबेस में मौजूद सभी ट्रिगर्स को देखने के लिए SELECT tgname कमांड का उपयोग करके pg_trigger कैटलॉग को क्वेरी करें।
  • ️ ड्रॉप: DROP TRIGGER ट्रिगर को हटाता है, और IF EXISTS ट्रिगर के न होने पर त्रुटि को रोकता है।
  • 🤖 एआई सहायता: एआई सहायक सरल भाषा में दिए गए अनुरोध से ट्रिगर फ़ंक्शन उत्पन्न करते हैं और पहले या बाद के समय का सुझाव देते हैं।

PostgreSQL ट्रिगर्स

ट्रिगर क्या है? 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 ट्रिगर उदाहरण बनाएँ

हम नीचे दी गई मूल्य तालिका का उपयोग करेंगे:

मूल्य:

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 सूची ट्रिगर

आपके द्वारा बनाए गए सभी ट्रिगर्स PostgreSQL pg_trigger टेबल में संग्रहीत हैं। आपके पास मौजूद ट्रिगर्स की सूची देखने के लिए डेटाबेसनीचे दिखाए अनुसार SELECT कमांड चलाकर तालिका को क्वेरी करें:

SELECT tgname FROM pg_trigger;

यह निम्नलिखित लौटाता है:

PostgreSQL सूची ट्रिगर

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) एक डेमो डेटाबेस बनाएं

  1. बाईं ओर स्थित नेविगेशन बार से, डेटाबेस पर क्लिक करें।
  2. डेमो पर क्लिक करें.

ट्रिगर बनाएँ PostgreSQL pgAdmin का उपयोग करके

चरण 3) क्वेरी टाइप करें

Price_Audits टेबल बनाने के लिए, एडिटर में यह क्वेरी टाइप करें:

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
)

चरण 4) क्वेरी निष्पादित करें

निष्पादित करें बटन पर क्लिक करें.

ट्रिगर बनाएँ PostgreSQL pgAdmin का उपयोग करके

चरण १) चलाएँ 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) नया रिकॉर्ड डालें

  1. मूल्य तालिका में नया रिकॉर्ड सम्मिलित करने के लिए निम्नलिखित कमांड चलाएँ:
INSERT INTO Price
VALUES (3, 400)
  1. यह जाँचने के लिए कि क्या Price_Audits तालिका में कोई रिकॉर्ड डाला गया था, निम्नलिखित कमांड चलाएँ:
SELECT * FROM Price_Audits

इसे निम्नलिखित वापस करना चाहिए:

ट्रिगर बनाएँ PostgreSQL pgAdmin का उपयोग करके

चरण 8) तालिका सामग्री की जाँच करें

आइए Price_Audits टेबल की सामग्री की जांच करें।

pgAdmin का उपयोग करके लिस्टिंग ट्रिगर्स

चरण 1) अपने डेटाबेस में ट्रिगर्स की जांच करने के लिए निम्नलिखित कमांड चलाएँ:

SELECT tgname FROM pg_trigger

यह निम्नलिखित लौटाता है:

pgAdmin का उपयोग करके लिस्टिंग ट्रिगर्स

बूंदping pgAdmin का उपयोग करके ट्रिगर करना

कंपनी टेबल पर example_trigger नामक ट्रिगर को हटाने के लिए, निम्नलिखित कमांड चलाएँ:

DROP TRIGGER example_trigger IF EXISTS
ON Company

इस ट्यूटोरियल में प्रयुक्त डेटाबेस डाउनलोड करें

अक्सर पूछे जाने वाले प्रश्न

BEFORE ट्रिगर पंक्ति में परिवर्तन लिखे जाने से पहले चलता है, ताकि पंक्ति को संशोधित या अस्वीकार किया जा सके। AFTER ट्रिगर परिवर्तन सहेजे जाने के बाद चलता है, जो लॉगिंग और ऑडिट कार्यों के लिए उपयुक्त है।

INSTEAD OF ट्रिगर किसी टेबल पर नहीं, बल्कि व्यू पर परिभाषित किया जाता है। यह INSERT, UPDATE या DELETE को कस्टम लॉजिक से बदल देता है, जिससे रीड-ओनली व्यू राइटेबल बन जाता है।

ट्रिगर फ़ंक्शन आमतौर पर PL/pgSQL में लिखे जाते हैं। PostgreSQL पीएल का भी समर्थन करता है/PythonPL/Perl, PL/Tcl और C जैसी भाषाएँ उपलब्ध हैं, इसलिए आप अपनी तर्क क्षमता के अनुसार भाषा चुन सकते हैं।

इसे बंद करने के लिए ALTER TABLE table-name DISABLE TRIGGER trigger-name कमांड का उपयोग करें, और इसे वापस चालू करने के लिए ENABLE TRIGGER कमांड का उपयोग करें। इससे डेटा ड्रॉप होने से बचा जा सकता है।ping और बल्क लोडिंग के दौरान ट्रिगर को पुनः उत्पन्न करना।

जी हां। प्रत्येक ट्रिगर प्रभावित होने वाली प्रत्येक पंक्ति या कथन में कार्य जोड़ता है, इसलिए जटिल ट्रिगर लॉजिक लेखन को धीमा कर सकता है। ट्रिगर फ़ंक्शन को छोटा रखें और उन सभी कॉलम को इंडेक्स करें जिनकी वे क्वेरी करते हैं।

हां। यदि कोई ट्रिगर किसी अन्य टेबल को बदलता है जिसमें पहले से ही ट्रिगर मौजूद हैं, तो वे भी सक्रिय हो जाते हैं, जिससे क्रमिक ट्रिगर उत्पन्न होते हैं। PostgreSQL अनंत लूपों को रोकने के लिए नेस्टिंग की गहराई को सीमित करता है।

एआई कोडिंग सहायक एक साधारण भाषा के अनुरोध को एक पूर्ण क्रिएट ट्रिगर स्टेटमेंट और ट्रिगर फ़ंक्शन में बदल देते हैं, बिफोर या आफ्टर टाइमिंग का सुझाव देते हैं, और त्वरित समीक्षा के लिए उत्पन्न पीएल/पीजीएसक्यूएल की व्याख्या करते हैं।

जी हां। pgai और GPT-आधारित सहायकों जैसे उपकरण वर्णित नियम को ट्रिगर SQL में अनुवादित करते हैं, और INSERT ट्रिगर बना सकते हैं जो नए डेटा के आते ही उसे स्वचालित रूप से टैग या मान्य करते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: