一、問題
插入數據時報錯
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`);