Mendua Baris dalam MySQL Tanpa Menghitung Lajur
Dalam MySQL, pengguna menghadapi keperluan untuk mencipta salinan baris sedia ada dalam jadual. Walaupun tergoda untuk menggunakan pendekatan yang mudah seperti:
insert into table select * from table where primarykey=1
kaedah ini mencetuskan ralat "Entri pendua untuk kunci 1" disebabkan oleh keunikan kunci utama. Untuk mengelakkan isu ini, penyelesaian yang berdaya maju melibatkan penciptaan jadual sementara:
create table oldtable_temp like oldtable; insert into oldtable_temp select * from oldtable where key=1; update oldtable_tem set key=2; insert into oldtable select * from oldtable where key=2;
Walau bagaimanapun, pendekatan yang lebih diselaraskan wujud, seperti yang dicadangkan 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;
Dengan menggunakan jadual sementara, kita boleh mengelakkan kebimbangan tentang pertindihan kunci utama. Menetapkan kunci utama kepada null membolehkan MySQL menetapkan nilai unik secara automatik, menghapuskan risiko mencipta pendua.
Untuk memastikan ketunggalan semasa pemasukan, pertimbangkan untuk menambahkan LIMIT 1 pada pernyataan INSERT INTO.
Selain itu, adalah disyorkan untuk memasukkan nilai kunci utama (cth., "tmptable_1" dalam contoh) ke dalam nama jadual sementara untuk kejelasan.
Atas ialah kandungan terperinci Bagaimana untuk Menduakan Baris dalam MySQL Tanpa Melanggar Kekangan Utama Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!