Dit gebeurt wanneer u een primaire sleutel hebt, maar deze geen initialisatiewaarde geeft. De invoeging zelf veroorzaakt de duplicatie.
In uw geval komen er twee mogelijkheden bij u op:
-
supp_id
is de primaire sleutel en gedeclareerd als een getal. In oudere versies van MySQL denk ik dat de tekenreekswaarden stil worden geconverteerd naar getallen. Omdat de hoofdtekens letters zijn, is de waarde 0. -
Je hebt een andere
id
veld dat de primaire sleutel is, maar zonder waarde en niet gedeclareerdauto_increment
.
BEWERKEN:
Ik vermoed dat je de volgende code wilt:
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');
Enkele opmerkingen:
- Meestal wil je
varchar()
in plaats vanchar()
, tenzij je echt van veel spaties aan het einde van strings houdt. - Ik heb een unieke leveranciersnaam aan de tabel toegevoegd en de id aangegeven als een
auto_increment
. - Enkele aanhalingstekens zijn ANSI-standaard voor tekenreeksconstanten. MySQL (en sommige andere databases) staan dubbele aanhalingstekens toe, maar er is geen reden om de standaard niet te gebruiken.