3
我搜索了StackOverflow,但我找不到我的具体问题的答案。重复密钥更新导致外键约束错误
最近,我已经成为一个更新记录与列表,使用“INSERT INTO ... ON DUPLICATE KEY UPDATE”的忠实粉丝。但是,我遇到以下查询问题:
INSERT INTO itens (prod_id, qtd) VALUES (410, 1),(442, -1)
ON DUPLICATE KEY UPDATE qtd = qtd + VALUES(qtd)
导致出现错误:“无法添加或更新子行:外键约束失败。”
这是所讨论的表格的结构。 “carrinho_id”是一个外键。我感到困惑的是,我并没有试图用外键做任何事情。我只是想更新数量。
CREATE TABLE IF NOT EXISTS `itens` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`carrinho_id` int(10) unsigned NOT NULL DEFAULT '1',
`prod_id` int(10) unsigned NOT NULL DEFAULT '1',
`qtd` int(12) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `carrinho_id` (`carrinho_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=229 ;
指定所有键(主键和外)也奏效了我。谢谢! –