Isso ocorre quando você tem uma chave primária, mas não fornece um valor de inicialização. A própria inserção está causando a duplicação.
No seu caso, duas possibilidades vêm à mente:
-
supp_id
é a chave primária e declarada como um número. Em versões mais antigas do MySQL, acho que os valores de string são convertidos silenciosamente em números. Como os caracteres iniciais são letras, o valor é 0.
-
Você tem outroid
campo que é a chave primária, mas não recebeu nenhum valor e não foi declaradoauto_increment
.
EDITAR:
Suspeito que você queira o seguinte código:
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');
Algumas notas:
- Geralmente você deseja
varchar()
em vez dechar()
, a menos que você realmente goste de muitos espaços no final das strings. - Adicionei um nome de fornecedor exclusivo à tabela e declarei o id como um
auto_increment
. - Aspas simples são padrão ANSI para constantes de string. MySQL (e alguns outros bancos de dados) permitem aspas duplas, mas não há razão para não usar o padrão.