在重复键上插入UPDATE

时间:2013-07-17 04:49:13

标签: mysql pdo

我有一个查询,如果该行尚不存在则更新表或插入,但由于某种原因,它只是一直插入。

这是我的表结构:

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 个答案:

答案 0 :(得分:1)

无法区分发生的重复。

一旦违反任何唯一约束,它就会执行ON DUPLICATE KEY UPDATE部分。

对于您的情况,您只需要创建由2个字段组成的唯一复合键:(uid, product_id)