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_idist 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
idFeld, das der Primärschlüssel ist, aber keinen Wert hat und nicht alsauto_incrementdeklariert 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_incrementdeklariert . - 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.