Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql - INSERT दिनांक सीमा दिनांक कॉलम में यदि तिथियां मौजूदा वाले के साथ ओवरलैप नहीं होती हैं

अफसोस की बात है कि सिर्फ 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 से बड़ी है तो यह केवल डालने/अपडेट करने के लिए नहीं है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL पर MySQLi के लाभ

  2. पीडीओ तैयार बयान कितने सुरक्षित हैं

  3. MySQL कुछ विदेशी कुंजियों को हटा रहा है

  4. कॉलम num_rows के साथ एक दृश्य बनाएं - MySQL

  5. श्रेणी और उसके बच्चे के सभी आइटम प्राप्त करें