0
我試圖插入僞數據到我的數據庫去,並在一個特定的表中我有兩列是FK和PK的表; fk_product_manf_code和fk_content_id。據我的理解,這些被視爲目前狀態下的複合鍵。複合鍵1欄中的重複輸入錯誤
所以我將數據添加到表:
fk_product_manf_code fk_content_id
NOV-ABC123 1
然後,我想其他的content_id相同的product_manf_code關聯,所以我執行以下操作:
INSERT INTO `mydb`.`package_contents`
(`fk_product_manf_code`, `fk_content_id`)
VALUES
('NOV-ABC123', 2);
但是我與打招呼出現以下錯誤:
Error Code: 1062. Duplicate entry 'NOV-ABC123' for key 'fk_product_manf_code_UNIQUE'
我不明白髮生了什麼,因爲我以爲是複合e鍵使2列獨一無二?那麼爲什麼它只是一個小題大做,只有一列是獨一無二的?
下面是表CREATE語句
CREATE TABLE `package_contents` (
`fk_product_manf_code` varchar(255) NOT NULL,
`fk_content_id` int(11) NOT NULL,
PRIMARY KEY (`fk_content_id`,`fk_product_manf_code`),
UNIQUE KEY `fk_content_id_UNIQUE` (`fk_content_id`),
UNIQUE KEY `fk_product_manf_code_UNIQUE` (`fk_product_manf_code`),
CONSTRAINT `content_id` FOREIGN KEY (`fk_content_id`) REFERENCES `contents` (`content_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `product_manf_code` FOREIGN KEY (`fk_product_manf_code`) REFERENCES `products` (`product_manf_code`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
主鍵是確實的複合,但你還定義在單個列唯一約束('UNIQUE KEY ...')。 – Marvin
最近我發現這是一個冗餘配置,但是在試圖除去這兩列的唯一索引,MySQL工作臺使我有以下錯誤:'錯誤1553:不能刪除索引「fk_product_manf_code_UNIQUE」:需要一個外鍵constraint' – adampski