Ini terjadi ketika Anda memiliki kunci utama tetapi tidak memberikan nilai inisialisasi. Sisipan itu sendiri yang menyebabkan duplikasi.
Dalam kasus Anda, dua kemungkinan muncul di benak Anda:
-
supp_id
adalah kunci utama dan dideklarasikan sebagai angka. Dalam versi MySQL yang lebih lama, saya pikir nilai string secara diam-diam dikonversi ke angka. Karena karakter utama adalah huruf, maka nilainya adalah 0. -
Anda memiliki
id
lain bidang yang merupakan kunci utama, tetapi tidak diberi nilai dan tidak dideklarasikanauto_increment
.
EDIT:
Saya menduga Anda menginginkan kode berikut:
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');
Beberapa catatan:
- Biasanya Anda ingin
varchar()
daripadachar()
, kecuali jika Anda sangat menyukai banyak spasi di akhir string. - Saya menambahkan nama pemasok unik ke tabel dan menyatakan id sebagai
auto_increment
. - Kutipan tunggal adalah standar ANSI untuk konstanta string. MySQL (dan beberapa database lainnya) mengizinkan tanda kutip ganda, tetapi tidak ada alasan untuk tidak menggunakan standar.