जैसा कि हम जानते हैं कि ट्रिगर परिभाषा में, हम सम्मिलित, अपडेट या डिलीट की जा रही पंक्ति के कॉलम को संदर्भित कर सकते हैं। OLD और NEW कीवर्ड हमें कॉलम एक्सेस करने में निम्न तरीकों से सक्षम करते हैं -
मूल पंक्ति से मान को संदर्भित करने के लिए हमें कॉलम नाम को OLD क्वालिफायर के साथ प्रीफिक्स करना होगा।
नई पंक्ति में मान को संदर्भित करने के लिए हमें कॉलम नाम को NEW क्वालिफायर के साथ प्रीफिक्स करना होगा।
अब, OLD और NEW का उपयोग उचित रूप से किया जाना चाहिए क्योंकि ट्रिगरिंग इवेंट
निर्धारित करता है कि उनमें से कौन सा अनुमत है -
INSERT ट्रिगर में, NEW.column_name एक नई पंक्ति में डाले जाने वाले कॉलम मान को इंगित करता है। यहां OLD अनुमत नहीं है।
DELETE ट्रिगर में, OLD.column_name डिलीट की जाने वाली पंक्ति में कॉलम के मान को इंगित करता है। यहां NEW अनुमत नहीं है।
UPDATE ट्रिगर में, OLD.column_name और NEW.column_name क्रमशः पंक्ति अपडेट होने से पहले और बाद में कॉलम के मान को संदर्भित करते हैं।
दूसरे शब्दों में, हम कह सकते हैं कि OLD का उपयोग केवल पढ़ने के लिए किया जाना चाहिए और NEW का उपयोग कॉलम मानों को पढ़ने या बदलने के लिए किया जा सकता है।
ट्रिगर में OLD कीवर्ड का उपयोग
निम्न 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)