我试图用其他数据库的另一个表更新一个表,最后一次更新时,我创建了一个函数,以便在一个产品中保存多个类别,因此,当运行旧脚本更新我的表时,会出现一个约束错误。我理解这种情况和为什么会发生这种情况,但是我如何允许使用重复数据的表进行更新呢?是否有禁用约束的方法?
我的查询
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;
但还是不起作用。有什么建议吗?谢谢已经提前了!
发布于 2017-06-29 15:11:42
如果表名反映了表的用途,则主键应该是
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
https://stackoverflow.com/questions/44825902
复制相似问题