यह तब होता है जब आपके पास प्राथमिक कुंजी होती है लेकिन इसे प्रारंभिक मान न दें। डालने से ही दोहराव हो रहा है।
आपके मामले में, दो संभावनाएं दिमाग में आती हैं:
-
supp_id
प्राथमिक कुंजी है और एक संख्या के रूप में घोषित किया गया है। MySQL के पुराने संस्करणों में, मुझे लगता है कि स्ट्रिंग मान चुपचाप संख्याओं में परिवर्तित हो जाते हैं। चूंकि प्रमुख वर्ण अक्षर हैं, इसलिए मान 0 है। -
आपके पास एक और
id
है फ़ील्ड जो प्राथमिक कुंजी है, लेकिन कोई मूल्य नहीं दिया गया है और घोषित नहीं किया गया हैauto_increment
।
संपादित करें:
मुझे संदेह है कि आप निम्न कोड चाहते हैं:
CREATE TABLE suppliers (
supplierId int NOT NULL auto_increment primary key,
supp_name varchar(255) unique,
company_name varchar(15) NOT NULL,
town varchar(15),
phone varchar(15)
);
INSERT INTO Suppliers(supp_name, company_name, town, phone)
Values ('ADT217', 'AdTec', 'Birmingham', '0121-368-1597'),
('CPS533', 'CPS', 'Maidenhead', '01382-893715'),
('FCL162', 'ForComp Ltd', 'Nottingham', '01489-133722'),
('KBC355', 'KBC Computers', 'Glasgow', '0141-321-1497');
कुछ नोट:
- आमतौर पर आप चाहते हैं
varchar()
इसके बजायchar()
, जब तक कि आपको स्ट्रिंग्स के अंत में वास्तव में बहुत सारे स्थान पसंद न हों। - मैंने तालिका में एक अद्वितीय आपूर्तिकर्ता नाम जोड़ा और आईडी को
auto_increment
घोषित किया । - एकल उद्धरण स्ट्रिंग स्थिरांक के लिए एएनएसआई मानक हैं। MySQL (और कुछ अन्य डेटाबेस) दोहरे उद्धरण चिह्नों की अनुमति देते हैं, लेकिन मानक का उपयोग न करने का कोई कारण नहीं है।