2013-03-25 15 views
8

का अमान्य उपयोग मुझे mySQL का उपयोग करने में समस्या है।शून्य मान

यह त्रुटि पॉप अप होता है:

Invalid use of null value

मैं एक मेज प्राथमिक कुंजी में दो विशेषताओं बनाने की कोशिश कर रहा था;

alter table contact_info 
add contactID varchar(10); 

alter table contact_info 
add suffixID varchar(8); 

alter table contact_info 
add titleID varchar(12); 

alter table contact_info 
add companyID varchar(12); 

alter table contact_info 
add phonetypeID char(2); 

किसी को क्या गलत है पता है:

alter table contact_info 
add primary key(phone_number, contactID); 

यहाँ बदलने बयान मैं अपने contact_info तालिका में डाल रहे हैं: यहाँ मेरी कोड है? अग्रिम में धन्यवाद।

उत्तर

9

contact_info की तलाश करें जिसमें phone_number या contactID में शून्य मान है। आप तालिका में मौजूदा शून्य मानों के साथ प्राथमिक कुंजी नहीं जोड़ सकते हैं।

select * 
from contact_info 
where (phone_number is null or contactID is null) 

एसक्यूएल को किसी रिकॉर्ड को खोजने के लिए चलाएं जहां मान शून्य हैं। रिकॉर्ड्स अपडेट करें, फिर अपनी प्राथमिक कुंजी को फिर से लागू करने का प्रयास करें।

मुझे यकीन नहीं है कि आप क्या कर रहे हैं, लेकिन आप को अपने डेटा का बैक अप लेना चाहेंगे !!! किसी भी अपडेट को चलाने से पहले

update contact_info 
set contactID = (select max(contactID) from contact_info) + 1 
where contactID is null 

update contact_info 
set phone_number = '555-1212' 
where phone_number is null 

आप अपने डेटा में डुप्लिकेट हैं, तो आप उन्हें खोजने के लिए और उन लोगों के रूप में अच्छी तरह से अद्यतन करने की आवश्यकता: यहाँ एक अद्यतन आप एक contactID स्थापित करने के लिए उपयोग करने में सक्षम हो सकता है। यहाँ कैसे आप डुप्लिकेट मिल सकता है: जहां हमलावर स्तंभ हैं

-- Assuming the phone_number is duplicate (2 people living in the same house with the same phone number) 
select a.phone_number, count(1) 
from contact_info a 
group by a.phone_number 
having count(1) > 1 
+0

अब मुझे कुंजी 'प्राथमिक' के लिए डुप्लिकेट प्रविष्टि मिल रही है। इसका क्या अर्थ है? –

+0

प्राथमिक कुंजी, चाहे वह आपके कॉलम में 2 कॉलम हो या 2, डुप्लिकेट न हो। मैं आपको डुप्लीकेट खोजने में मदद करूंगा। – Jess

1

इस क्वेरी चल रहा है आपको बता देंगे। आप प्राथमिक कुंजी होने के लिए NULL मान सेट नहीं कर सकते हैं।

SELECT * 
FROM contact_info 
WHERE phone_number IS NULL 
OR contactID IS NULL 
+0

अब मुझे कुंजी 'प्राथमिक' के लिए डुप्लिकेट प्रविष्टि मिल रही है। इसका क्या मतलब है? –

संबंधित मुद्दे