अफसोस की बात है कि सिर्फ MySQL का उपयोग करना असंभव है। या कम से कम, व्यावहारिक रूप से। पसंदीदा तरीका SQL CHECK बाधाओं का उपयोग करना होगा, ये SQL भाषा मानक में हैं। हालाँकि, MySQL उनका समर्थन नहीं करता है।
देखें:https://dev.mysql.com/doc /refman/5.7/hi/create-table.html
ऐसा लगता है कि PostgreSQL तालिकाओं पर CHECK बाधाओं का समर्थन करता है, लेकिन मुझे यकीन नहीं है कि डेटाबेस इंजन को स्विच करना आपके लिए कितना व्यवहार्य है या यदि यह उस सुविधा का उपयोग करने के लिए परेशानी के लायक भी है।
MySQL में इस समस्या को हल करने के लिए एक ट्रिगर का उपयोग किया जा सकता है, जो सम्मिलित/अद्यतन होने से पहले ओवरलैपिंग पंक्तियों की जांच करेगा और SIGNAL
का उपयोग करके एक त्रुटि फेंक देगा। बयान। (देखें:https://dev.mysql.com/doc/ refman/5.7/hi/signal.html
) हालांकि, इस समाधान का उपयोग करने के लिए आपको एक अद्यतन MySQL संस्करण का उपयोग करना होगा।
शुद्ध SQL समाधानों के अलावा, यह आमतौर पर एप्लिकेशन लॉजिक में किया जाता है, इसलिए जो भी प्रोग्राम MySQL डेटाबेस तक पहुंच रहा है, आमतौर पर इस तरह की बाधाओं के लिए हर पंक्ति का अनुरोध करके जांच करता है जिसका उल्लंघन SELECT COUNT(id) ...
बयान। यदि लौटाई गई संख्या 0 से बड़ी है तो यह केवल डालने/अपडेट करने के लिए नहीं है।