Dies tritt auf, wenn Sie einen Primärschlüssel haben, ihm aber keinen Initialisierungswert zuweisen. Die Einfügung selbst verursacht die Duplizierung.
In Ihrem Fall fallen mir zwei Möglichkeiten ein:
-
supp_id
ist der Primärschlüssel und wird als Zahl deklariert. In älteren Versionen von MySQL werden die Zeichenfolgenwerte meiner Meinung nach stillschweigend in Zahlen umgewandelt. Da die führenden Zeichen Buchstaben sind, ist der Wert 0. -
Sie haben eine andere
id
Feld, das der Primärschlüssel ist, aber keinen Wert hat und nicht alsauto_increment
deklariert ist .
BEARBEITEN:
Ich vermute, Sie wollen den folgenden Code:
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');
Einige Anmerkungen:
- Normalerweise möchten Sie
varchar()
stattchar()
, es sei denn, Sie mögen wirklich viele Leerzeichen am Ende von Strings. - Ich habe der Tabelle einen eindeutigen Lieferantennamen hinzugefügt und die ID als
auto_increment
deklariert . - Einfache Anführungszeichen sind der ANSI-Standard für String-Konstanten. MySQL (und einige andere Datenbanken) erlauben doppelte Anführungszeichen, aber es gibt keinen Grund, den Standard nicht zu verwenden.