MySQL में मौजूदा कॉलम में अशक्त बाधा को कैसे जोड़ा जाए


164

मेरे पास स्तंभ नाम के साथ "व्यक्ति" नामक तालिका नाम है

P_Id(int),
LastName(varchar),
FirstName (varchar).

मैं देने के लिए भूल गया NOT NULLके लिए बाधा P_Id

अब मैंने निम्नलिखित NOT NULLकॉलम के साथ मौजूदा कॉलम को जोड़ने के लिए निम्नलिखित प्रश्न के साथ प्रयास किया P_Id,

1. ALTER TABLE  Person MODIFY  (P_Id NOT  NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT  NULL NOT NULL (P_Id);

मुझे सिंटेक्स त्रुटि हो रही है ...।

जवाबों:


261

बस एक ALTER TABLE... MODIFY...क्वेरी का उपयोग करें और NOT NULLअपनी मौजूदा कॉलम परिभाषा में जोड़ें । उदाहरण के लिए:

ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;

चेतावनी का एक शब्द: आपको एक क्वेरी का उपयोग करते समय पूर्ण स्तंभ परिभाषा को फिर से निर्दिष्ट करने की आवश्यकता है MODIFY। यदि आपके कॉलम में, उदाहरण के लिए, कोई DEFAULTमान या कोई स्तंभ टिप्पणी है, तो आपको इसे MODIFYडेटा प्रकार और the के साथ बयान में निर्दिष्ट करने की आवश्यकता है NOT NULL, या यह खो जाएगा। इस तरह के हादसों से बचाव के लिए सबसे सुरक्षित अभ्यास एक SHOW CREATE TABLE YourTableक्वेरी के आउटपुट से कॉलम की परिभाषा की नकल करना है , इसे NOT NULLबाधा को शामिल करने के लिए संशोधित करें और इसे अपने ALTER TABLE... MODIFY...प्रश्न में पेस्ट करें ।


4
@Positive ने INT(11)सिर्फ और सिर्फ क्यों नहीं लिखा INT? का प्रभाव क्या है 11?
सुजैन डुपरॉन

2
11 सिर्फ एक उदाहरण है, यह P_Id की लंबाई निर्धारित करता है। मुझे यकीन नहीं है कि अगर इसे फिर से जोड़ना आवश्यक है, भले ही आप इसे बदलना भी न चाहें।
जेरार्ड

2
@Pacerier आपके साथ changeकॉलम का नाम संशोधित करता है
जेवियर पी

1
@ विक्टर MODIFYभी ओरेकल द्वारा समर्थित है। और PostgreSQL का समर्थन नहीं करता है CHANGEबजाय यह एक ALTER [COLUMN]बयान प्रदान करता है ।
श्री डेथलेस

1
स्वयं पर ध्यान दें: संरचित क्वेरी भाषा एक मानक क्वेरी भाषा नहीं है ...
दिमित्री

20

इसे आज़माएं, आपको बदलाव और बदलाव के बीच का अंतर पता चल जाएगा,

ALTER TABLE table_name CHANGE curr_column_name new_column_name new_column_datatype [constraints]

ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]
  • आप विशेष कॉलम का उपयोग करके नाम और डेटाटाइप बदल सकते हैं CHANGE
  • आप विशेष कॉलम डेटाटाइप का उपयोग करके संशोधित कर सकते हैं MODIFY। आप इस कथन का उपयोग करके कॉलम का नाम नहीं बदल सकते।

आशा है, मैंने विस्तार से बताया।


5
आप बदलने के लिए MODIFY ऑपरेशन करते हैं लेकिन रिवर्स संभव नहीं है?
नवरतन यादव

1
अजीब तरह से मुझे एक त्रुटि मिल रही थी (MySQL 5.6, Workbench 6.3) एक कॉलम को बदलना / संशोधित करना, जिसका नाम मैंने null_heart_rate_count रखा है, त्रुटि # 1138 थी, NULL मान का अमान्य उपयोग। मुझे इसके बजाय कॉलम को छोड़ना और जोड़ना था।
विलियम टी। मलार्ड

@NavrattanYadav मुझे लगता है कि वह नाम बदलने का मतलब है, उल्टा नहीं
shaahiin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.