2013-07-17 60 views
0

我有一個查詢,如果該行不存在,其更新表或插入,但由於某些原因,它只是插入所有的時間。INSERT與UPDATE上的重複鍵

這是我的表結構:

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)

+0

這怎麼做=/ – Sir

+0

@戴夫:究竟是什麼? – zerkms

+0

兩個字段= 1的主鍵 – Sir