MySQL帶主鍵表復制行


要在MySQL表中復制一行,網上一搜有很多結果,大概類似這樣:

insert into 表1 select * from 表1 where id =1;

或者是這樣

insert into 表1(字段2,字段3) select 字段2,字段3 from 表1 where id=1;

對於沒有設置主鍵的表,像上面兩種方式進行行復制插入是可行的,但是如果表設置了主鍵的話,上面兩種復制語句都是不可行的。第一種是因為主鍵不能重復,第二種是因為主鍵不能為空的。

對於第一種會出現這種錯誤:ERROR 1062 (23000): Duplicate entry 'xxx' for key 'PRIMARY'

對於第二種會出現這種錯誤:ERROR 1364 (HY000): Field 'yyy' doesn't have a default value

 

在有主鍵的表中如何完全復制一行呢?

復制的語句還是使用類似上面的子查詢插入,但是我們需要修改主鍵的值以避免主鍵沖突,語法如下:

INSERT INTO my_table (`id`, `title`, `author`) SELECT 2 AS `id`, `title`, `author` FROM my_table WHERE `id` = 1;

說明一下:

這里 id 字段是主鍵,然后從同一表中復制一行,但是主鍵字段id不能為空,也不能重復,因此通過使用 as 用一個指定值來替換覆蓋子select查出來的id字段的值,然后把這一行復制插入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM