杜佩錯誤我有運行此更新的腳本:的MySQL:在UPDATE
UPDATE `Cq_Item`
SET `rfq_item_id` = '9',
`value` = 'No Bid',
`datetime_created` = '2012-10-23T20:54:42+00:00',
`id` = '101'
WHERE `id` = '101'
在此表:
CREATE TABLE IF NOT EXISTS `cq_item` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`rfq_item_id` mediumint(8) unsigned NOT NULL,
`product_id_quoted` mediumint(8) unsigned DEFAULT NULL,
`quantity` mediumint(6) unsigned DEFAULT '0',
`value` float(10,4) NOT NULL,
`datetime_created` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `rfq_item_id` (`rfq_item_id`,`product_id_quoted`,`quantity`,`value`),
KEY `product_id` (`product_id_quoted`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=102 ;
和它拋出這個錯誤:
1062 - Duplicate entry '9-321742-1-0.0000' for key 'rfq_item_id'
當然,我不是SQL大師,但在update
上投擲一個重複錯誤似乎有點不直觀。
我明白爲什麼這樣的錯誤會得到上INSERT
拋出,但我可以使用一些幫助搞清楚什麼我做錯了,以獲取有關該UPDATE
:)
僅僅從你的錯誤描述看來,對於我來說,在索引'rfq_item_id'中包含的字段中有相同值的另一條記錄是非常明顯的。檢查您的數據...如果您的條目中包含的數據與您嘗試更新的數據相同,那麼您將無法執行更新(因爲它會違反唯一的關鍵規則)。順便說一句,你不需要再次設置'id' ...它的值不會改變 – Barranka
@Barranka對我來說,這似乎也很明顯,已經有一條匹配這些獨特約束條件的記錄......感謝善良的人,如@邁克布蘭特,他們可以通過分享更多信息來幫助他們......(順便說一句,你是正確的,'ID'字段是不需要的SQL,但業務邏輯取決於它,所以我會讓時間深入,看看可以做什麼。) – mOrloff