हमें MySQL ट्रिगर्स के फायदे, नुकसान और प्रतिबंधों को समझना चाहिए ताकि हम उनका प्रभावी ढंग से उपयोग कर सकें।
फायदे
MySQL ट्रिगर्स के उपयोग के फायदे निम्नलिखित हैं -
- डेटा की अखंडता - MySQL ट्रिगर की मदद से हम टेबल में डेटा की अखंडता की जांच कर सकते हैं। दूसरे शब्दों में, MySQL ट्रिगर्स डेटा अखंडता जांचने का एक वैकल्पिक तरीका हैं।
- त्रुटियों को पकड़ने के लिए उपयोगी - MySQL ट्रिगर्स डेटाबेस लेयर में व्यावसायिक तर्क की त्रुटियों को पकड़ सकते हैं।
- शेड्यूल्ड टास्क चलाने का वैकल्पिक तरीका - वास्तव में MySQL ट्रिगर्स का उपयोग करके हमें शेड्यूल्ड टास्क चलाने के लिए इंतजार नहीं करना पड़ता क्योंकि ट्रिगर्स टेबल में डेटा संशोधन से 'पहले' या 'बाद' स्वचालित रूप से आह्वान किए जाते हैं।
- ऑडिटिंग - वास्तव में MySQL ट्रिगर्स टेबल में किए गए परिवर्तनों के ऑडिटिंग के लिए बहुत उपयोगी हैं।
- अमान्य ट्रांजैक्शन की रोकथाम - MySQL ट्रिगर्स अमान्य ट्रांजैक्शन की रोकथाम में बहुत उपयोगी हैं।
- इवेंट लॉगिंग - MySQL ट्रिगर्स किसी इवेंट को लॉग कर सकते हैं और टेबल एक्सेस की जानकारी भी स्टोर कर सकते हैं।
नुकसान
MySQL ट्रिगर्स के उपयोग के नुकसान निम्नलिखित हैं -
- सभी वैलिडेशन को प्रतिस्थापित नहीं कर सकते - वास्तव में, MySQL ट्रिगर्स सभी वैलिडेशन को प्रतिस्थापित नहीं कर सकते और केवल विस्तारित वैलिडेशन प्रदान कर सकते हैं।
- क्लाइंट एप्लिकेशन से अदृश्य - मूल रूप से MySQL ट्रिगर्स क्लाइंट एप्लिकेशन से अदृश्य रूप से आह्वान और निष्पादित होते हैं इसलिए डेटाबेस लेयर में क्या होता है इसका पता लगाना बहुत मुश्किल होता है।
- सर्वर पर लोड डालते हैं - ट्रिगर्स डेटाबेस सर्वर पर उच्च लोड डाल सकते हैं।
- उच्च गति वाले डेटा के लिए अनुशंसित नहीं - ट्रिगर्स उच्च-गति डेटा यानी डेटा के साथ उपयोग के लिए लाभदायक नहीं हैं जहां प्रति सेकंड घटनाओं की संख्या अधिक होती है। ऐसा इसलिए क्योंकि उच्च-गति डेटा के मामले में ट्रिगर्स हर समय ट्रिगर होते हैं।
प्रतिबंध
MySQL ट्रिगर्स पर लागू होने वाले कुछ प्रतिबंध निम्नलिखित हैं -
- प्रत्येक टाइमिंग/इवेंट के लिए केवल एक ट्रिगर - प्रत्येक टेबल में प्रत्येक टाइमिंग/इवेंट संयोजन के लिए केवल एक ट्रिगर हो सकता है (यानी: हम एक ही टेबल के लिए दो BEFORE INSERT ट्रिगर परिभाषित नहीं कर सकते)।
- RETURN स्टेटमेंट अनुमत नहीं - चूंकि ट्रिगर्स कोई मान वापस नहीं करते इसलिए RETURN स्टेटमेंट अनुमत नहीं है।
- विदेशी कुंजी प्रतिबंध - ट्रिगर्स विदेशी कुंजी क्रियाओं द्वारा सक्रिय नहीं होते।
- पुराना मेटाडेटा - मान लीजिए, अगर कोई ट्रिगर कैश में लोड है, तो यह टेबल मेटाडेटा बदलने पर स्वचालित रूप से रीलोड नहीं होता। इस मामले में, एक ट्रिगर पुराने मेटाडेटा का उपयोग करके काम कर सकता है।
- 'CALL' स्टेटमेंट का उपयोग नहीं कर सकते - हम ट्रिगर्स में CALL स्टेटमेंट का उपयोग नहीं कर सकते।
- TEMPORARY टेबल या व्यू नहीं बना सकते - हम एक अस्थायी टेबल या व्यू के लिए व्यू नहीं बना सकते।
- INFORMATION_SCHEMA में परिवर्तनों द्वारा सक्रिय नहीं - वास्तव में, ट्रिगर्स INFORMATION_SCHEMA या performance_schema टेबल में किए गए परिवर्तनों द्वारा सक्रिय नहीं होते। ऐसा इसलिए क्योंकि ये टेबल व्यू हैं और ट्रिगर्स व्यू पर अनुमत नहीं हैं।