Mengendalikan Rekod Pendua dalam Operasi Sisipan MySQL
Memasukkan data ke dalam jadual pangkalan data selalunya melibatkan pemeriksaan rekod pendua untuk mengekalkan integriti data. Dalam MySQL, satu pendekatan untuk mengendalikan rekod pendua ialah menggunakan klausa WHERE NOT EXISTS.
Pertimbangkan senario berikut di mana anda cuba memasukkan rekod ke dalam jadual table_listnames, memastikan medan nama adalah unik:
INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022') WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name='value' );
Walau bagaimanapun, melaksanakan pertanyaan ini mungkin mengakibatkan ralat. Untuk menangani perkara ini, penyelesaian yang lebih mantap ialah menggunakan indeks UNIK pada lajur nama:
CREATE TABLE `table_listnames` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `address` varchar(255) NOT NULL, `tele` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_name` (`name`) ) ENGINE=InnoDB;
Apabila anda cuba memasukkan nama pendua, pangkalan data akan menolaknya secara automatik, mengelakkan ketidakkonsistenan data. Pendekatan ini lebih diutamakan daripada menggunakan WHERE NOT EXISTS, kerana ia cekap dan memastikan integriti data.
Sebagai contoh, memasukkan rekod dengan nama pendua akan menghasilkan mesej ralat mesra:
INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022');
Error: Duplicate entry 'Rupert' for key 'unique_name'
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cekap Mencegah Entri Pendua Apabila Memasukkan Data ke dalam Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!