Detta inträffar när du har en primärnyckel men inte ger den ett initialiseringsvärde. Insatsen i sig orsakar dupliceringen.
I ditt fall kommer två möjligheter att tänka på:
-
supp_id
är den primära nyckeln och deklareras som ett tal. I äldre versioner av MySQL tror jag att strängvärdena konverteras tyst till siffror. Eftersom de inledande tecknen är bokstäver är värdet 0. -
Du har ett annat
id
fält som är primärnyckeln, men som inte ges något värde och inte deklareratsauto_increment
.
EDIT:
Jag misstänker att du vill ha följande kod:
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');
Några anteckningar:
- Vanligtvis vill du ha
varchar()
istället förchar()
, såvida du inte verkligen gillar många mellanslag i slutet av strängar. - Jag lade till ett unikt leverantörsnamn i tabellen och deklarerade id:t som ett
auto_increment
. - Enstaka citattecken är ANSI-standard för strängkonstanter. MySQL (och vissa andra databaser) tillåter dubbla citattecken, men det finns ingen anledning att inte använda standarden.