Bagaimana untuk Menduakan Baris dalam MySQL Tanpa Ralat Kemasukan Pendua?

Barbara Streisand
Lepaskan: 2024-11-14 21:50:02
asal
777 orang telah melayarinya

How to Duplicate Rows in MySQL Without a Duplicate Entry Error?

Mendua Baris dalam MySQL: Penyelesaian Alternatif

Apabila cuba menduplikasi baris dalam jadual MySQL yang sama menggunakan pertanyaan:

insert into table select * from table where primarykey=1
Salin selepas log masuk

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;
Salin selepas log masuk

Penjelasan:

  1. Jadual sementara (tmptable_1) dibuat dan diisi dengan yang dikehendaki baris untuk diduplikasi.
  2. Lajur kunci utama dalam jadual sementara ditetapkan kepada NULL. Ini membolehkan MySQL memberikan nilai unik secara automatik, mengelakkan sebarang pertindihan kunci.
  3. Baris daripada jadual sementara dimasukkan ke dalam jadual asal.
  4. Jadual sementara kemudian digugurkan.

Dengan menetapkan kunci utama kepada NULL, anda menghapuskan risiko mencipta entri pendua. Selain itu, menambah LIMIT 1 pada penghujung penyataan INSERT INTO memastikan bahawa 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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan