如何使用重复的主键更新表?

时间:2017-06-29 13:01:38

标签: mysql

我试图用其他数据库的另一个表更新一个表,我上次更新了我创建了一个函数来保存一个产品中的多个类别,所以,我在运行旧脚本时更新我的​​表,一个约束出现错误。我了解情况以及为什么会发生这种情况,但我如何允许使用带有重复数据的表进行更新?有没有办法禁用约束?

我的查询

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;

但仍然无法正常工作。有什么建议吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果表名反映了表的目的,则主键应为

PRIMARY KEY(product_id, category_id)

为了避免重复,例如具有相同product_idcategory_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