0

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

这是我的表结构:

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组合已经存在于表中。

那么有没有办法指定要寻找什么样的重复来更新而不是插入?

4

1 回答 1

1

没有办法区分发生了什么重复。

一旦违反任何唯一约束-它将执行ON DUPLICATE KEY UPDATE部分。

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

于 2013-07-17T04:51:51.140 回答