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 ;