अनोखा अवरोध जो MySQL में खाली मूल्यों की अनुमति देता है


125

मेरे पास एक फ़ील्ड है जो उत्पाद कोड संग्रहीत करता है। कोड अद्वितीय हैं, लेकिन कुछ उत्पादों में केवल एक कोड नहीं है। मैं कोड का आविष्कार नहीं कर सकता क्योंकि वे प्रदाता कोड हैं।

क्या MySQL में इस तरह की बाधा संभव है?

मैं संग्रहीत प्रक्रियाओं और ट्रिगर के साथ एक नॉब हूं, इसलिए यदि समाधान में इनमें से एक शामिल है, तो कृपया धैर्य रखें।

अद्यतन: कॉलम अशक्त नहीं है। इसलिए मैं ऐसा करने में असमर्थ था।



@AmirAliAkbari यह मजेदार है कि ये दोनों एक दूसरे को "संभावित डुप्लिकेट" के रूप में कैसे लिंक करते हैं। यह एक पुराना है, हालांकि। :)
पीजूस

जवाबों:


182

हां, आप यह कर सकते हैं। देखें MySQL संदर्भ (संस्करण 5.5)

एक UNIQUE सूचकांक एक अवरोध बनाता है जैसे कि सूचकांक के सभी मूल्य अलग-अलग होने चाहिए। यदि आप मौजूदा पंक्ति से मेल खाने वाले कुंजी मान के साथ एक नई पंक्ति जोड़ने का प्रयास करते हैं, तो एक त्रुटि उत्पन्न होती है। सभी इंजनों के लिए, एक UNIQUE सूचकांक उन स्तंभों के लिए कई NULL मानों की अनुमति देता है जिनमें NULL हो सकते हैं।


8
धन्यवाद। मुझे इसे अशक्त बनाना है
डिस्नेटाइग्रेटर

django मॉडल में यह समस्या थी। यह अशक्त काम करता है। धन्यवाद
श्रेय

13

हां, यदि आप उत्पाद कोड कॉलम को अशक्त बनाते हैं (साथ घोषित नहीं किया जाता है NOT NULL), तो अद्वितीय कुंजी NULLउत्पाद कोड के साथ कई पंक्तियों की अनुमति देगा ।


धन्यवाद। मुझे इसे अशक्त बनाना है
डिस्नेटाइग्रेटर

8

MySQL अभी भी NULLएक अद्वितीय कॉलम में कई पंक्तियों के लिए एक मान रखता है।


धन्यवाद। मुझे इसे अशक्त बनाना है
डिस्नेटाइग्रेटर

@MianAnjum बोल्ड: टेबल बनाएं table( keyनहीं NULL AUTO_INCREMENT, पूर्णांक (11) fieldtinyint (1) डिफ़ॉल्ट शून्य )
पॉल नोवाक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.