Dette sker, når du har en primær nøgle, men ikke giver den en initialiseringsværdi. Indsatsen i sig selv forårsager duplikeringen.
I dit tilfælde dukker to muligheder op:
-
supp_id
er den primære nøgle og erklæret som et tal. I ældre versioner af MySQL tror jeg, at strengværdierne stille og roligt bliver konverteret til tal. Fordi de foranstående tegn er bogstaver, er værdien 0. -
Du har et andet
id
felt, der er den primære nøgle, men uden værdi og ikke erklæretauto_increment
.
EDIT:
Jeg formoder, at du vil have følgende kode:
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');
Nogle bemærkninger:
- Normalt vil du have
varchar()
i stedet forchar()
, medmindre du virkelig kan lide mange mellemrum for enden af strenge. - Jeg tilføjede et unikt leverandørnavn til tabellen og erklærede id'et som en
auto_increment
. - Enkelte anførselstegn er ANSI-standard for strengkonstanter. MySQL (og nogle andre databaser) tillader dobbelte anførselstegn, men der er ingen grund til ikke at bruge standarden.