MySQL में ओवरलैपिंग दिनांक सीमा से निपटना
मौजूदा तालिका में नई तिथि सीमा सम्मिलित करना मुश्किल हो सकता है, खासकर जब ओवरलैप को रोकने की कोशिश की जा रही हो मौजूदा प्रविष्टियाँ. इस संदर्भ में, हम एक विशिष्ट खाता पहचानकर्ता (acc_id) के लिए डेटाबेस में उन श्रेणियों को सम्मिलित करने से बचना चाहते हैं।
जबकि MySQL SQL CHECK बाधाओं का उपयोग करके तिथियों को मान्य करने का विकल्प प्रदान करता है, दुर्भाग्य से यह सुविधा नहीं है MySQL द्वारा समर्थित. दूसरी ओर, PostgreSQL, CHECK बाधाओं का समर्थन करता है, लेकिन डेटाबेस इंजन को स्विच करना सभी स्थितियों के लिए संभव नहीं हो सकता है।
एक विकल्प के रूप में, हम एप्लिकेशन लॉजिक में सत्यापन लागू कर सकते हैं। एक दृष्टिकोण में INSERT का प्रयास करने से पहले ओवरलैप की जांच करने के लिए SELECT COUNT(id)... स्टेटमेंट का उपयोग करना शामिल है:
SELECT COUNT(id) FROM avail WHERE acc_id = '175' AND (start_date BETWEEN '2015-05-30' AND '2015-06-04') OR (end_date BETWEEN '2015-05-30' AND '2015-06-04') OR ('2015-05-30' BETWEEN start_date AND end_date) OR ('2015-06-04' BETWEEN start_date AND end_date);
यदि लौटाई गई गिनती 0 से अधिक है, तो ओवरलैप के कारण सम्मिलन निरस्त कर दिया जाता है।
एक अन्य विधि में a का उपयोग करना शामिल है MySQL में ट्रिगर। INSERT/UPDATE होने से पहले ओवरलैप की जांच करने के लिए एक ट्रिगर को प्रोग्राम किया जा सकता है और यदि कोई त्रुटि पाई जाती है तो त्रुटि उत्पन्न कर सकता है। हालाँकि, ट्रिगर्स के लिए एक अद्यतन MySQL संस्करण की आवश्यकता होती है।
आखिरकार, दृष्टिकोण का चुनाव आपके एप्लिकेशन की विशिष्ट आवश्यकताओं और समर्थित तरीकों में से एक में इसे लागू करने की व्यवहार्यता पर निर्भर करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3