MySQL डेटाबेस में प्राथमिक कुंजी के लिए "नहीं पूर्ण" बाधाओं को घोषित करना आवश्यक है? प्राथमिक कुंजी में नल मान नहीं हो सकते हैं क्योंकि यह auto_increments वैसे भी है और स्वचालित रूप से फ़ील्ड रिकॉर्ड भरता है। तो क्या मैं यह कहने में सही हूं कि मैं अपनी प्राथमिक कुंजी के लिए "नहीं पूर्ण" बाधा को हटा सकता हूं?MySQL - प्राथमिक कुंजी के लिए आवश्यक "नहीं पूर्ण" बाधाएं हैं?
उत्तर
(आप अपने प्रश्न mysql
टैग किया है के रूप में।) MySQL में, आप इसे स्पष्ट रूप से ऐसा करने के लिए नहीं है। the manual से:
बेशकएक
PRIMARY KEY
एक अद्वितीय सूचकांक जहां सभी प्रमुख स्तंभोंNOT NULL
के रूप में परिभाषित किया जाना चाहिए। अगर उन्हें स्पष्ट रूप सेNOT NULL
के रूप में घोषित नहीं किया गया है, तो MySQL उन्हें स्पष्ट रूप से (और चुपचाप) घोषित करता है।
, सिर्फ इसलिए कि आप करने का मतलब यह नहीं कि आप स्पष्टता के लिए करने के लिए नहीं चाहते हो सकता है नहीं है, आदि
न केवल यह पीके कॉलम को 'नॉट नल' के रूप में घोषित करता है, अगर उन्हें 'न्यूल' के रूप में घोषित किया गया है तो यह ओवरराइड/उन्हें 'न्यूल' में संशोधित करता है। –
हाँ और नहीं आप निकाल सकते हैं "शून्य नहीं", कि यद्यपि बाधा को दूर नहीं करेगा। व्यक्तिगत रूप से मैं उन्हें छोड़ दूंगा, आपको उन्हें बाहर निकालने से कुछ भी लाभ नहीं मिलता है।
नहीं, आप नहीं कर सकते। यदि कोई कॉलम प्राथमिक कुंजी का हिस्सा है, तो नल नलिका को नल में बदला नहीं जा सकता है। –
@ypercube उन्होंने "नल में परिवर्तन" नहीं कहा, उन्होंने कहा "नल को हटाएं"। सिर्फ इसलिए कि डीडीएल पाठ में न्यूल नहीं है इसका मतलब यह नहीं है कि यह लागू नहीं है। –
@ ब्रैंको: यदि उसका मतलब है "परिभाषा से" नल "शब्द को हटाएं", हाँ, मैं सहमत हूं। फिर से पढ़ना, आप सही हैं, शायद यही मतलब था। –
प्राथमिक कुंजी में निरर्थक कॉलम शामिल नहीं होना चाहिए। auto_increment
चेक बाधा नहीं है, (यह एक डिफ़ॉल्ट बाधा है), इसलिए आप auto_increment
की उपस्थिति के बावजूद प्राथमिक कुंजी का हिस्सा कॉलम की परिभाषा से not null
को हटा नहीं सकते हैं। MySQL में प्राथमिक कुंजी के लिए तालिका बनाते समय आपको not null
टाइप करने की आवश्यकता नहीं है, क्योंकि इंजन स्वचालित रूप से इस बाधा को जोड़ता है।
हमें स्पष्ट रूप से कॉलम को शून्य के रूप में घोषित करने की आवश्यकता नहीं है क्योंकि प्राथमिक कुंजी बाधा कॉलम को पूर्ण नहीं करती है। मैंने ओरेकल में चेक किया है।
- 1. MySQL विदेशी कुंजी बाधाएं, कैस्केड
- 2. mysql कई प्राथमिक कुंजी
- 3. MySQL मल्टीकॉलम प्राथमिक कुंजी
- 4. MySQL प्राथमिक/विदेशी कुंजी आकार?
- 5. MySQL प्राथमिक कुंजी बदल देते हैं विदेशी कुंजी contraints मौजूद
- 6. SQLite में प्राथमिक कुंजी के लिए आवश्यक अनुक्रमणिका है?
- 7. डीबी पर आवश्यक अनन्य बाधाएं हैं?
- 8. MySQL - ऑटो इन्टरमेंट प्राथमिक कुंजी
- 9. mysql - डालने के बाद प्राथमिक कुंजी
- 10. प्राथमिक कुंजी
- 11. प्राथमिक कुंजी
- 12. बड़ी तालिकाओं के लिए MySQL प्राथमिक कुंजी कॉलम प्रकार
- 13. कुंजी 'प्राथमिक'
- 14. हाइबरनेट MySQL auto_increment प्राथमिक कुंजी फ़ील्ड का सम्मान नहीं करता
- 15. समग्र प्राथमिक कुंजी या नहीं?
- 16. CakePHP विदेशी कुंजी नहीं प्राथमिक कुंजी
- 17. MySQL और चेक बाधाएं
- 18. SqlServer MySQL जैसे auto_increment प्राथमिक कुंजी
- 19. mysql में प्राथमिक कुंजी रीसेट करें?
- 20. MySQL लोड डेटा INFILE - कोई प्राथमिक कुंजी
- 21. MySQL ऑटो-वृद्धिशील अल्फा-न्यूमेरिक प्राथमिक कुंजी?
- 22. पूर्ण समग्र प्राथमिक/विदेशी कुंजी समर्थन के साथ PHP ओआरएम
- 23. प्राथमिक कुंजी
- 24. PostgreSQL समग्र प्राथमिक कुंजी
- 25. एक समग्र प्राथमिक कुंजी
- 26. प्राथमिक कुंजी
- 27. प्राथमिक कुंजी
- 28. एसक्यूएल 2008 - INFORMATION_SCHEMA में विदेशी कुंजी बाधाएं
- 29. प्राथमिक कुंजी
- 30. प्राथमिक कुंजी
कॉलम पर होने के बाद उन्हें चोट नहीं पहुंची है और तालिका परिभाषा को पढ़ने पर चीजें _explicit_ बनाती हैं। यदि, भविष्य में, आप प्राथमिक कुंजी बाधा बदलते हैं, तो आपके पास अभी भी 'न्यूल न' बाधा है। – Oded
आपके पास दो अवधारणाएं हैं जो आपके पास नहीं होनी चाहिए। एक प्राथमिक कुंजी को ऑटो वृद्धिशील कॉलम नहीं होना चाहिए, न ही (यदि किसी तालिका में एक है) तो ऑटो वृद्धिशील कॉलम प्राथमिक कुंजी होना चाहिए। सिर्फ इसलिए कि वे * एक साथ * एक साथ उपयोग किए जाने का मतलब यह नहीं है कि वे एक ही बात हैं। –