मेरे पास एक ईमेल कॉलम है जो मैं अद्वितीय होना चाहता हूं। लेकिन मैं यह भी चाहता हूं कि यह अशक्त मूल्यों को स्वीकार करे। क्या मेरे डेटाबेस में 2 शून्य ईमेल हो सकते हैं?
मेरे पास एक ईमेल कॉलम है जो मैं अद्वितीय होना चाहता हूं। लेकिन मैं यह भी चाहता हूं कि यह अशक्त मूल्यों को स्वीकार करे। क्या मेरे डेटाबेस में 2 शून्य ईमेल हो सकते हैं?
जवाबों:
हां, MySQL एक अद्वितीय बाधा के साथ एक कॉलम में कई NULLs की अनुमति देता है।
CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1); -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;
परिणाम:
x
NULL
NULL
1
यह सभी डेटाबेस के लिए सही नहीं है। SQL सर्वर 2005 और पुराने, उदाहरण के लिए, केवल एक स्तंभ में एक एकल NULL मान की अनुमति देता है जिसमें एक अद्वितीय बाधा होती है।
WHERE column IS NOT NULL
मुझे विफल नहीं लगता है क्योंकि यह MySQL के मेरे संस्करण में समर्थित नहीं है। किसी को पता है कि मैं कहाँ देख सकता हूँ?
से डॉक्स :
"एक अद्वितीय सूचकांक उन स्तंभों के लिए कई NULL मानों की अनुमति देता है जिनमें NULL हो सकते हैं"
यह सभी इंजनों लेकिन पर लागू होता है BDB ।
मैं अनिश्चित हूं कि क्या लेखक मूल रूप से सिर्फ यह पूछ रहा था कि क्या यह डुप्लिकेट मानों की अनुमति देता है या नहीं या यदि कोई निहित प्रश्न है, तो पूछें, " NULL
उपयोग करते समय डुप्लिकेट मानों की अनुमति कैसे दें UNIQUE
?" या "केवल एक UNIQUE
NULL
मूल्य की अनुमति कैसे दें ?"
प्रश्न का उत्तर पहले ही दिया जा चुका है, हाँ अनुक्रमणिका NULL
का उपयोग करते समय आपके पास डुप्लिकेट मान हो सकते हैं UNIQUE
।
चूँकि मैं इस जवाब पर अड़ा रहा कि "एक UNIQUE
NULL
मूल्य की अनुमति कैसे दी जाए "। किसी और के लिए जो इस सवाल पर ठोकर खा सकता है, जबकि मेरा बाकी जवाब आपके लिए है ...
MySQL में आपके पास एक UNIQUE
NULL
मान नहीं हो सकता है , हालांकि आपके पास एक UNIQUE
खाली स्ट्रिंग के मूल्य के साथ सम्मिलित करके एक खाली मान हो सकता है ।
चेतावनी: संख्यात्मक और स्ट्रिंग के अलावा अन्य प्रकार 0 या किसी अन्य डिफ़ॉल्ट मान के लिए डिफ़ॉल्ट हो सकते हैं।
UNIQUE
बाधा के कारण नहीं, बल्कि बाधा के कारण विफल NOT NULL
होता है। मुझे लगता है कि यह जवाब सवाल के लिए अप्रासंगिक है क्योंकि सवाल विशेष रूप से UNIQUE
बाधा के व्यवहार के बारे में है ।
अशक्त अद्वितीय बाधाओं से बचें। आप हमेशा कॉलम को एक नई तालिका में रख सकते हैं, इसे गैर-अशक्त और अद्वितीय बना सकते हैं और फिर उस तालिका को केवल तब ही पॉप्युलेट कर सकते हैं जब आपके पास इसका मूल्य हो। यह सुनिश्चित करता है कि स्तंभ पर किसी भी निर्भरता को सही ढंग से लागू किया जा सकता है और किसी भी समस्या से बचा जा सकता है जो नल के कारण हो सकती है।