जैसा कि हम जानते हैं कि ट्रिगर परिभाषा में, हम पंक्ति के कॉलम को सम्मिलित, अद्यतन या हटाए जाने का उल्लेख कर सकते हैं। निम्नलिखित तरीके हैं जिनसे पुराने और नए कीवर्ड हमें कॉलम तक पहुंचने में सक्षम बनाते हैं -
-
मूल पंक्ति से किसी मान को संदर्भित करने के लिए हमें कॉलम नाम को पुराने के क्वालीफायर के साथ उपसर्ग करना होगा।
-
नई पंक्ति में किसी मान को संदर्भित करने के लिए हमें कॉलम नाम को नए के क्वालिफायर के साथ उपसर्ग करना होगा।
अब, पुराने और नए का उपयोग उचित रूप से किया जाना चाहिए क्योंकि ट्रिगरिंग घटना
निर्धारित करता है कि उनमें से कौन सा स्वीकार्य है -
-
INSERT ट्रिगर में, NEW.column_name एक कॉलम मान को एक नई पंक्ति में सम्मिलित करने का संकेत देता है। यहां OLD की अनुमति नहीं है।
-
DELETE ट्रिगर में, OLD.column_name हटाए जाने वाली पंक्ति में कॉलम के मान को इंगित करता है। यहां NEW की अनुमति नहीं है।
-
अद्यतन ट्रिगर में, OLD.column_name और NEW.column_name क्रमशः पंक्ति को अद्यतन करने से पहले और बाद में पंक्ति में कॉलम के मान को संदर्भित करते हैं।
दूसरे शब्दों में, हम कह सकते हैं कि OLD का उपयोग केवल-पढ़ने के लिए किया जाना चाहिए और NEW का उपयोग कॉलम मानों को पढ़ने या बदलने के लिए किया जा सकता है।
ट्रिगर में पुराने कीवर्ड का उपयोग
DELETE ट्रिगर के उदाहरण के बाद OLD का उपयोग दिखा रहा है -
mysql> CREATE TRIGGER studentinfo_after_delete -> AFTER DELETE -> ON student_info -> FOR EACH ROW FOLLOWS -> BEGIN -> DECLARE vuser varchar(30); -> SELECT USER() into vuser; -> INSERT INTO student_info_deleted(id,deleted_date,deleted_by) VALUES(OLD.id,SYSDATE(),vuser); -> END; // Query OK, 0 rows affected (0.25 sec)
ट्रिगर में कीवर्ड NEW का उपयोग
INSERT ट्रिगर के उदाहरण के बाद NEW का उपयोग दिखा रहा है -
mysql> Create Trigger before_inser_studentage BEFORE INSERT ON student_age FOR EACH ROW BEGIN IF NEW.age < 0 THEN SET NEW.age = 0; END IF; END // Query OK, 0 rows affected (0.30 sec)