簡體   English   中英

MySQL矛盾插入

[英]MySQL contradiction insert

我試圖插入到我的一張桌子(從同一張桌子)。 我需要更改其中的1個值,因此我嘗試插入select作為此處的答案。 我有一個自動增量pk,並且希望新插入的pk繼續計數。 因此插入將導致對pk加1。

INSERT INTO test.pp_publication_info
(id,
publication_fk,
template_fk,
allow_excel_upload)
SELECT 
id, 55, template_fk, allow_excel_upload
FROM pp_publication_info where id = "1";

我收到1062錯誤,這是KEY PRIMARY的1的重復條目。 但是由於AI,我將擁有+1 ID列的信息。 因此,我檢查了是否可以添加ON DUPLICATE KEY UPDATE id 不幸的是,我在查詢中的位置並不重要。

簡而言之:我可以在保持AI功能的同時通過select INSERT嗎? 如果是這樣,我在哪里出錯?如果沒有,是否有其他選擇?

另外:我表的創建語句:

CREATE TABLE `pp_publication_info` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`publication_fk` int(10) unsigned NOT NULL,
`template_fk` int(10) unsigned DEFAULT NULL,
`allow_excel_upload` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

您的id AUTO_INCREMENT

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

這意味着插入記錄時數據庫將生成一個標識為您服務 因此,只需不要在該字段中插入值。 它將自動填充。

所以像這樣:

INSERT INTO test.pp_publication_info
  (publication_fk,
   template_fk,
   allow_excel_upload)
SELECT 
  55, template_fk, allow_excel_upload
FROM pp_publication_info where id = 1;

執行INSERT后,您會發現所有新記錄的id列已填充有序列中的下一個值。 (除非有任何原因,否則序列中可能沒有任何缺口。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM