我搜索了 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 ;