Apabila cuba menduplikasi baris dalam jadual MySQL yang sama menggunakan pertanyaan:
insert into table select * from table where primarykey=1
anda mungkin menghadapi ralat masukan pendua kerana kekangan kunci utama sedia ada. Walaupun jadual sementara boleh digunakan untuk memintas isu ini, terdapat penyelesaian yang lebih mudah.
Menggunakan teknik diubah suai berikut yang diilhamkan oleh Leonard Challis:
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1; UPDATE tmptable_1 SET primarykey = NULL; INSERT INTO table SELECT * FROM tmptable_1; DROP TEMPORARY TABLE IF EXISTS tmptable_1;
Penjelasan:
Dengan menetapkan kunci utama kepada NULL, anda menghapuskan risiko mencipta entri pendua. Selain itu, menambah LIMIT 1 pada penghujung penyataan INSERT INTO memastikan hanya satu baris disisipkan.
Melampirkan nilai kunci utama pada nama jadual sementara ialah langkah berjaga-jaga untuk mengelakkan kemungkinan konflik apabila berbilang baris sedang dijalankan diduplikasi serentak.
Atas ialah kandungan terperinci Bagaimana untuk Menduakan Baris dalam MySQL Tanpa Ralat Kemasukan Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!