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_Audit टेबल में भी रिकॉर्ड डाला जाना चाहिए। यह Price टेबल पर हमारे द्वारा बनाए गए ट्रिगर के परिणामस्वरूप होगा। आइए इसे जांचें:

SELECT * FROM Price_Audits;

इससे निम्नलिखित परिणाम प्राप्त होंगे:

PostgreSQL ट्रिगर बनाएं

ट्रिगर सफलतापूर्वक काम किया.

पोस्टग्रेज़ सूची ट्रिगर

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

SELECT tgname FROM pg_trigger;

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

पोस्टग्रेज़ सूची ट्रिगर

pg_trigger तालिका का tgname कॉलम ट्रिगर का नाम दर्शाता है।

पोस्टग्रेज ड्रॉप ट्रिगर

एक ड्रॉप करने के लिए PostgreSQL ट्रिगर के लिए, हम निम्नलिखित सिंटैक्स के साथ DROP TRIGGER कथन का उपयोग करते हैं:

DROP TRIGGER [IF EXISTS] trigger-name 
ON table-name [ CASCADE | RESTRICT ];

ट्रिगर-नाम पैरामीटर उस ट्रिगर का नाम दर्शाता है जिसे हटाया जाना है।

तालिका-नाम उस तालिका का नाम दर्शाता है जिससे ट्रिगर को हटाया जाना है।

IF EXISTS क्लॉज मौजूद ट्रिगर को हटाने का प्रयास करता है। यदि आप IF EXISTS क्लॉज का उपयोग किए बिना किसी ऐसे ट्रिगर को हटाने का प्रयास करते हैं जो मौजूद नहीं है, तो आपको एक त्रुटि मिलेगी।

CASCADE विकल्प आपको ट्रिगर पर निर्भर सभी ऑब्जेक्ट्स को स्वचालित रूप से हटाने में मदद करेगा।

यदि आप RESTRICT विकल्प का उपयोग करते हैं, तो यदि ऑब्जेक्ट इस पर निर्भर हैं तो ट्रिगर हटाया नहीं जाएगा।

उदाहरण के लिए:

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

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

DROP TRIGGER example_trigger IF EXISTS
ON Company;

pgAdmin का उपयोग करना

अब आइए देखें कि pgAdmin का उपयोग करके सभी तीन क्रियाएं कैसे निष्पादित की गईं।

ट्रिगर कैसे बनाएं? PostgreSQL pgAdmin का उपयोग करके

यहां बताया गया है कि आप pgAdmin का उपयोग करके Postgres में ट्रिगर कैसे बना सकते हैं:

चरण 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 का उपयोग करके

चरण 5) ऑडिटफ़ंक्शन के लिए कोड चलाएँ

ऑडिटफ़ंक्शन को परिभाषित करने के लिए निम्नलिखित कोड चलाएँ:

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

चरण 6) ट्रिगर बनाने के लिए कोड चलाएँ

ट्रिगर price_trigger बनाने के लिए निम्नलिखित कोड चलाएँ:

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc()

चरण 7) नया रिकॉर्ड डालें

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

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

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

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

आइये Price_Audits तालिका की सामग्री की जाँच करें:

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

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

SELECT tgname FROM pg_trigger

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

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

pgAdmin का उपयोग करके ट्रिगर्स हटाना

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

DROP TRIGGER example_trigger IF EXISTS
ON Company

सारांश

  • A PostgreSQL ट्रिगर एक फ़ंक्शन को संदर्भित करता है जो किसी डेटाबेस ऑब्जेक्ट, जैसे कि तालिका, पर डेटाबेस ईवेंट होने पर स्वचालित रूप से ट्रिगर होता है।
  • ऐसे डेटाबेस ईवेंट के उदाहरणों में INSERT, UPDATE, DELETE आदि शामिल हैं।
  • ट्रिगर केवल उस डेटाबेस ऑब्जेक्ट के जीवनकाल के दौरान ही मौजूद रहता है जिसके लिए उसे बनाया गया था।
  • यदि डेटाबेस ऑब्जेक्ट हटा दिया जाता है, तो ट्रिगर भी हटा दिया जाएगा।
  • PostgreSQL ट्रिगर्स CREATE TRIGGER कथन का उपयोग करके बनाए जाते हैं।
  • प्रत्येक ट्रिगर एक फ़ंक्शन से जुड़ा होता है जो यह बताता है कि ट्रिगर लागू होने पर क्या करेगा।

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

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