我试图用其他数据库的另一个表更新一个表,我上次更新了我创建了一个函数来保存一个产品中的多个类别,所以,我在运行旧脚本时更新我的表,一个约束出现错误。我了解情况以及为什么会发生这种情况,但我如何允许使用带有重复数据的表进行更新?有没有办法禁用约束?
我的查询
UPDATE novourbano.oc_product_to_category oc
INNER JOIN erp_product_category erp ON oc.product_id = erp.erp_productid
SET oc.product_id = erp.erp_productid,
oc.category_id = erp.erp_categoryid
WHERE oc.product_id <> 0
我尝试使用它:
SET GLOBAL FOREIGN_KEY_CHECKS=0;
但仍然无法正常工作。有什么建议吗?提前谢谢!
答案 0 :(得分:1)
如果表名反映了表的目的,则主键应为
PRIMARY KEY(product_id, category_id)
为了避免重复,例如具有相同product_id
和category_id
的多个行。
您可以使用IGNORE
进行此次更新:
UPDATE IGNORE novourbano.oc_product_to_category oc
INNER JOIN erp_product_category erp ON oc.product_id = erp.erp_productid
SET oc.product_id = erp.erp_productid,
oc.category_id = erp.erp_categoryid