Това се случва, когато имате първичен ключ, но не му давате стойност за инициализация. Самата вложка причинява дублирането.
Във вашия случай ви идват на ум две възможности:
-
supp_id
е първичен ключ и е деклариран като число. В по-старите версии на MySQL мисля, че низовите стойности се преобразуват безшумно в числа. Тъй като водещите знаци са букви, стойността е 0. -
Имате друг
id
поле, което е първичен ключ, но без стойност и не е декларираноauto_increment
.
РЕДАКТИРАНЕ:
Подозирам, че искате следния код:
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');
Някои бележки:
- Обикновено искате
varchar()
вместоchar()
, освен ако наистина не харесвате много интервали в края на низовете. - Добавих уникално име на доставчик към таблицата и декларирах идентификатора като
auto_increment
. - Единичните кавички са стандарт на ANSI за низови константи. MySQL (и някои други бази данни) позволяват двойни кавички, но няма причина да не използвате стандарта.