नहीं, आपको सत्यापन करने के लिए ट्रिगर का उपयोग कभी नहीं करना चाहिए।
डेटाबेस केवल अपनी अखंडता के लिए जिम्मेदार है। सत्यापन का सामना करने वाले किसी भी उपयोगकर्ता को आपके आवेदन द्वारा किया जाना चाहिए।
डेटाबेस अखंडता के लिए सत्यापन के तीन स्तरों का प्रदर्शन करते हैं। पहले एक क्षेत्र स्तर सत्यापन है। एक फ़ील्ड की आवश्यकता हो सकती है, अगर कोई मूल्य नहीं है (अशक्त) यह एक त्रुटि है। यह एक चेक बाधा भी हो सकता है; एक डोमेन में मूल्यों की संख्या होती है।
दूसरे, तालिकाओं के बीच संबंध हैं। एक तालिका में आप एक या अधिक विदेशी कुंजियाँ संग्रहीत करते हैं, इस तालिका को अन्य तालिकाओं से संबंधित करते हैं और "अन्य तालिका" के लिए मान्य कुंजी होने के लिए मानों की आवश्यकता होती है। एक पता डेटाबेस के बारे में सोचें, जहाँ हम विभिन्न देशों के पते का समर्थन करते हैं। एक पते में एक देश कुंजी एक ज्ञात देश को इंगित करना चाहिए। क्या डेटा (उदाहरण के लिए पोस्टल कोड) मान्य है, इस अखंडता की जाँच की चिंता नहीं है।
तीसरे और सबसे जटिल ट्रिगर हैं। एक सामान्य नियम के रूप में इनको संबोधित करना चाहिए (दण्ड न दिया गया है) उन अखंडता नियमों की चिंता करता है जो सशर्त हैं। पते के उदाहरण पर वापस आने के लिए: यदि किसी देश में पोस्टल कोड नहीं है, तो यह समस्या होगी कि इस सूची में किसी देश का पोस्टल कोड होगा। इसलिए चेक यह होगा: यदि इस देश में पोस्टल कोड नहीं हैं, तो पोस्टल कोड फ़ील्ड शून्य होना चाहिए।
मान्यता आवेदन की चिंता है। तथ्य यह है कि एक जर्मन डाक कोड में केवल अंक होते हैं, यह एक ऐसा चेक होता है, जिसे एप्लिकेशन को बनाना चाहिए, डेटाबेस से नहीं। लाइन एक पतली है, इसलिए आपको कुछ मामलों में कुछ सोच / चर्चा की आवश्यकता हो सकती है यदि कुछ ट्रिगर (आपके डेटाबेस की अखंडता की रक्षा) या एप्लिकेशन (सत्यापन का सामना कर रहे उपयोगकर्ता) में होना चाहिए।
However, why not perform validation of data on the application side before storing them into the database?
खैर, ये दोनों परस्पर अनन्य नहीं हैं। यह संभावना है कि आप दोनों पक्षों की विभिन्न चीजों को मान्य करेंगे। जबकि आवेदन पक्ष पर सत्यापन व्यवसाय-केंद्रित हैं, डेटाबेस पर सत्यापन अधिक डेटा-केंद्रित हैं। कई और विभिन्न अनुप्रयोगों द्वारा खिलाए गए डेटाबेस में सोचें।