我有一个查询更新表或插入如果该行尚不存在,但由于某种原因它只是插入所有时间 .
这是我的表格结构:
Id (primary) | uid | product_id | quantity
这是我的查询:
INSERT INTO my_table (uid,product_id,quantity)
SELECT t1.uid,?,?
FROM checker t1
WHERE t1.id = ?
ON DUPLICATE KEY UPDATE
product_id = ?, quantity = quantity+?
我想要做的是使用 on duplicate key
如果表中已存在 uid + product_id
组合 .
那么有没有办法指定要更新而不是插入的复制类型?
1 回答
没有办法区分发生什么重复 .
一旦违反任何唯一约束 - 它将执行
ON DUPLICATE KEY UPDATE
部分 .对于您的情况,您只需要创建由2个字段组成的唯一复合键:
(uid, product_id)