Duplicate entry * for key *


一、問題

插入數據時報錯

Duplicate entry * for key *

二、分析

建表語句

CREATE TABLE `t_product_result_config` (
  `id` varchar(32) NOT NULL,
  `type` tinyint(4) NOT NULL COMMENT '條件類型 0:優秀,1:一般',
  `product_condition` json DEFAULT NULL COMMENT '條件對象JSON',
  `create_user_id` varchar(32) NOT NULL COMMENT '條件所屬用戶id',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  `gender` tinyint(4) NOT NULL COMMENT '性別類型 0:男,1:女,2:中性',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_id` (`id`),
  UNIQUE KEY `uk_type_create_user_id` (`type`,`create_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='測品結果條件表';

插入的SQL

問題定位

UNIQUE KEY uk_type_create_user_id (type,create_user_id)

相同的create_user_id和type下,由於UNIQUE KEY限制,只能存在一條數據;而產品需求是能建不同性別的數據,所以需要新增一個關聯字段

三、解決方案

ALTER TABLE t_product_result_config DROP INDEX `uk_type_create_user_id`;
ALTER TABLE t_product_result_config ADD UNIQUE KEY `uk_type_create_user_id`(`type`,`gender`,`create_user_id`);


免責聲明!

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



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