Trigger Timing (BEFORE, AFTER) sql In Hindi
एसक्यूएल डेटाबेस मैनेजमेंट सिस्टम में डेटाबेस टेबल क्वेरी इवेंट ट्रिगर्स को मल्टीप्ल टाइमिंग के साथ डिफाइन क्रिएट या मैन्युअल सेट किया जा सकता है, जहा BEFORE या AFTER क्वेरी इवेंट ट्रिगर यूजर को मल्टीप्ल टाइमिंग क्रिएट करने में हेल्प करती हैं, जिसमे की DML (डेटा मैनिपुलेशन लैंग्वेज) डेटाबेस ऑपरेशन में जैसे INSERT टेबल क्वेरी ऑपरेशन, UPDATE टास्क, या DELETE डाटा एसोसिएटेड डेटाबेस यूजर जनरेटेड टास्क से रिलेटेड ट्रिगर कब फायर या रन होना चाहिए। जिसमे की बिफोर या आफ्टर डेटाबेस टेबल क्वेरी इवेंट या एक्शन को मैन्युअल रूप से डिफाइन कर ट्रिगर किया जा सकता है।

BEFORE Triggers in SQL Database Management Systems.
याद रहे की डेटाबेस यूजर क्रिएटेड BEFORE इवेंट ट्रिगर डेटाबेस टेबल क्वेरी पर एक्चुअल DML ऑपरेशन एग्जीक्यूट या रन होने से पहले फायर होते है। इसका अर्थ है कि इवेंट ट्रिगर पहले डेटाबेस क्वेरी में एग्जीक्यूट होता है, यदि यहाँ इवेंट ट्रिगर सक्सेस्स्फुल्ली एग्जीक्यूट हो जाता है. तो इसके बाद ही डेटा मैनिपुलेशन ऑपरेशन रिलेटेड टास्क नेक्स्ट मूव होते है।
BEFORE Trigger Use Case – डेटाबेस टेबल में बिफोर ट्रिगर्स का यूज़ ज्यादातर टेबल डेटा को वैलिडेट करने, टेबल डेटा को इंसर्ट करने, अपडेट करने से पहले मैन्युअल मॉडिफाई करने, या यदि डेटाबेस टेबल में कुछ यूजर डिफाइन कंडीशन कम्पलीट नहीं होती हैं. तो इस प्रकार के बिफोर इवेंट ट्रिगर ऑपरेशन को स्टॉप करने में किया जाता है।
Example of a BEFORE INSERT event trigger.
यहाँ माना की हम एम्प्लॉई टेबल में यह फिक्स करना चाहते हैं, कि डेटाबेस यूजर द्वारा कोई नया रिकॉर्ड इंसर्ट करने से पहले किसी एम्प्लॉई की सैलरी कभी भी नेगेटिव वैल्यू पर सेट नहीं करे।
CREATE TRIGGER BeforeInsertEmployeeEvent
BEFORE INSERT ON employee
FOR EACH ROW
BEGIN
IF NEW.salary < 0 THEN
SIGNAL SQLSTATE ‘55000’ SET MESSAGE_TEXT = ‘You cannot Set Salary as negative’;
END IF;
END;
यहाँ इस एक्साम्प्ल में, डेटाबेस यूजर क्रिएटेड इवेंट ट्रिगर में एक नया रिकॉर्ड इंसर्शन से पहले सैलरी कॉलम की वैल्यू को चेक या एनालाइज करता है। यदि यहाँ एम्प्लॉई सैलरी नेगेटिव में है, तो यहाँ यूजर क्रिएटेड इवेंट ट्रिगर एक एरर को डिस्प्ले करता है, और यूजर को एक नया रिकॉर्ड इंसर्ट करने से पहले स्टॉप करता है।
Example of a BEFORE UPDATE event trigger.
यदि एम्प्लॉई टेबल में डेटाबेस यूजर किसी एम्प्लॉई की सैलरी को किसी अनचाही वैल्यू से मैन्युअल अपडेट करने के लिए ट्राय करता है, तो यहाँ डेटाबेस यूजर इस प्रोसेस को रिस्ट्रिक्ट करने के लिए BEFORE UPDATE इवेंट ट्रिगर को अप्लाई कर सकते हैं।
CREATE TRIGGER BeforeUpdateEmployeeTask
BEFORE UPDATE ON employee
FOR EACH ROW
BEGIN
IF NEW.salary < OLD.salary THEN
SIGNAL SQLSTATE ‘55000’ SET MESSAGE_TEXT = ‘You cannot update Salary’;
END IF;
END;
यहां इस एक्साम्प्ल में, बिफोर अपडेट इवेंट ट्रिगर यह चेक करता है कि डेटाबेस टेबल में अपडेटेड सैलरी पुरानी सैलरी से कम है, या नहीं है। यदि यहाँ ऐसा होता है, तो यह डेटाबेस यूजर को सैलरी अपडेट टास्क को रोकने के लिए एक एरर डिस्प्ले करता है।
AFTER triggers in SQL Database Management Systems.
एसक्यूएल डेटाबेस टेबल में एक यूजर क्रिएटेड AFTER इवेंट ट्रिगर एक्चुअल DML ऑपरेशन सक्सेस्स्फुल्ली कम्पलीट होने के बाद फायर या रन होता है। इसका अर्थ है कि यूजर क्रिएटेड इवेंट ट्रिगर तभी एग्जीक्यूट या रन होता है. जब यूजर डिफाइन डेटाबेस टेबल क्वेरी पर अप्लाई किया गया ऑपरेशन कम्पलीट हो जाता है। यहाँ आफ्टर ट्रिगर इवेंट ऑपरेशन डेटाबेस में यूजर लॉगिंग, सिस्टम जेनरेटेड ऑडिट ट्रेल्स टास्क को मेन्टेन करने, या इसी तरह के इवेंट एक्शन करने के लिए आइडियल चॉइस है. जो यूजर डिफाइन टास्क या ऑपरेशन कम्पलीट होने के बाद होने चाहिए।
AFTER event trigger use case – डेटाबेस टेबल में आफ्टर इवेंट ट्रिगर्स का यूज़ सामान्यता डेटा मैनिपुलेशन के बाद मॉडिफिकेशन को लॉग करने, अन्य रिलेटेड डेटाबेस टेबल्स को अपडेट करने, या अन्य टेबल सिस्टम्स को नोटिफाई करने जैसे यूजर जनरेटेड डेटाबेस टास्क या एक्शन को परफॉर्म करने में किया जाता है।
Example of an AFTER INSERT event trigger.
यहाँ माना की डेटाबेस यूजर एम्प्लॉई टेबल में एक नया एम्प्लॉई रिकॉर्ड इंसर्ट करने के बाद डेटाबेस यूजर इस इवेंट को एक ऑडिट टेबल में लॉग करना चाह सकते हैं।
CREATE TRIGGER AfterInsertEmployeeTask
AFTER INSERT ON employee
FOR EACH ROW
BEGIN
INSERT INTO audit_log (action, employee_id, action_time)
VALUES (‘INSERT’, NEW.employee_id, NOW());
END;
यहाँ इस एक्साम्प्ल में, आफ्टर इन्सर्ट इवेंट ट्रिगर नई रिकॉर्ड इंसर्ट ऑपरेशन के बाद फायर या रन होता है, और किसी भी प्रकार के सिस्टम एक्शन को audit_log टेबल में लॉग कर रिकॉर्ड करता है।
Example of an AFTER UPDATE event trigger.
यहाँ माना की डेटाबेस यूजर चाहता हैं कि एम्प्लॉई टेबल में जब भी किसी एम्प्लॉई का पोजीशन या सैलरी मॉडिफाई हो जाए, तो यहाँ एक अलग टेबल, employee_modification, में सभी चेंज अपडेट हो जाए।
CREATE TRIGGER AfterUpdateEmployeeTask
AFTER UPDATE ON employee
FOR EACH ROW
BEGIN
INSERT INTO employee_modification (employee_id, old_position, new_position, old_salary, new_salary, change_time)
VALUES (NEW.employee_id, OLD.position, NEW.position, OLD.salary, NEW.salary, NOW());
END;
यह आफ्टर इवेंट ट्रिगर किसी एम्प्लॉई रिकॉर्ड के अपडेट होने के बाद एम्प्लॉई पोजीशन और सैलरी के ओल्ड और नए वैल्यू को लॉग कर डिस्प्ले करता है।
Example of an AFTER DELETE event trigger.
यदि एम्प्लॉई टेबल में किसी मौजूदा एम्प्लॉई का रिकॉर्ड डिलीट किया जाता है, तो यहाँ डेटाबेस यूजर एम्प्लॉई डिलीट के लॉग को स्टोर कर सकते हैं।
CREATE TRIGGER AfterDeleteEmployeeTask
AFTER DELETE ON employee
FOR EACH ROW
BEGIN
INSERT INTO employee_deletion_log (employee_id, deletion_time)
VALUES (OLD.employee_id, NOW());
END;
यहाँ एम्प्लॉई टेबल में AFTER DELETE इवेंट ट्रिगर किसी एम्प्लॉई रिकॉर्ड के डिलीट प्रोसेस को लॉग कर डिस्प्ले करता है, जहा employee_id और डिलीट रिकॉर्ड का टाइमस्टैम्प स्टोर होता है।
Main Differences Between BEFORE and AFTER evet Triggers
| Trigger Aspect | BEFORE Trigger features | AFTER Trigger features |
| Each Execution Time | Before event trigger Executes before the database operation like (insert, update, delete) database table operation. | After event trigger Executes after the database table operation has been completed |
| Where to Use Case | Before database evet trigger used in Data validation, modifying table data before inserting/updating in database table. | After event trigger used in track user Logging, maintaining system audit trails, updating related database tables data. |
| It Can Modify Data | here, before event trigger can modify the table data that is about to be inserted/updated or deleted. | After event trigger enable us to can’t modify the table data after the database operation is complete. |
| Each of the Rollback Behaviour | Before event trigger Can prevent the database table operation, if hare database conditions aren’t met (by raising or display an error). | Here after event trigger Cannot prevent the database operation but can log changes or notify after the fact action done by. |
| What is Performance Impact | In before event trigger Potential performance impact due to checks before its operation. | Here after event trigger Less impact on the database operation, as it happens after database task completion. |
Conclusion on Trigger Timing (BEFORE, AFTER) in SQL.
- किसी भी प्रकार के डेटाबेस टेबल ऑपरेशन से पहले डेटा वैलिडेशन और मॉडिफिकेशन के लिए BEFORE इवेंट ट्रिगर सबसे बेस्ट होते हैं, जिससे की डेटाबेस यूजर फाल्स टेबल क्वेरी ऑपरेशन को ब्लॉक कर सकते हैं, या किसी भी प्रकार के इंडस्ट्री या बिज़नेस रूल्स को डेटाबेस टेबल में अप्लाई कर सकते हैं।
- डेटाबेस टेबल में AFTER इवेंट ट्रिगर उन टास्क के लिए यूज़फुल होते हैं, जो डेटाबेस टेबल क्वेरी ऑपरेशन कम्पलीट होने के बाद होने चाहिए। जैसे, की डेटाबेस या यूजर लॉगिंग, सिस्टम टास्क एक्टिविटीज ऑडिटिंग, और रिलेटेड डेटाबेस टेबल में टेबल डेटा को सिंक्रोनाइज़ करना आदि है।
- किसी डेटाबेस टेबल ऑपरेशन में BEFORE और AFTER इवेंट ट्रिगर में सलेक्शन इस बात पर डिपेंड करता है कि डेटाबेस यूजर को किसी इवेंट या एक्शन को स्टॉप करने की ज़रूरत है, या डेटाबेस ऑपरेशन के बाद किसी अतिरिक्त टास्क करने में हैं।
