首頁 > 資料庫 > mysql教程 > 如何在不違反主鍵約束的情況下複製 MySQL 中的行?

如何在不違反主鍵約束的情況下複製 MySQL 中的行?

Linda Hamilton
發布: 2024-11-11 16:04:02
原創
177 人瀏覽過

How to Duplicate Rows in MySQL Without Violating Primary Key Constraints?

在 MySQL 中複製行而不枚舉列

在 MySQL 中,使用者需要建立表中現有行的副本。雖然很容易使用簡單的方法,例如:

insert into table select * from table where primarykey=1
登入後複製

,但由於主鍵的唯一性,此方法會觸發「鍵 1 的重複條目」錯誤。為了解決這個問題,一個可行的解決方案是創建一個臨時表:

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;
登入後複製

但是,按照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;
登入後複製

透過利用臨時表,我們可以避免主鍵重複的擔憂。將主鍵設為 null 可以讓 MySQL 自動指派唯一值,從而消除建立重複值的風險。

為了確保插入過程中的單一性,請考慮在 INSERT INTO 語句中附加 LIMIT 1。

此外,為了清楚起見,建議將主鍵值(例如範例中的「tmptable_1」)合併到臨時表名稱中。

以上是如何在不違反主鍵約束的情況下複製 MySQL 中的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板