2016-06-14 47 views
1

我認爲這很容易解決,但我遇到了麻煩。我將記錄插入帶有自動遞增ID的表格中。在重複鍵更新時,我希望自動遞增的ID保持不變(不更新)。舉例來說,假設我有如下表:如何禁用自動遞增ID更新重複密鑰更新?

+-------------+-----------+------+ 
| ID   | Fruit  | Color| 
+-------------+-----------+------+ 
| 1   | Apple  | Red | 
| 2   | Apple  | Green| 
+-------------+-----------+------+ 

然後我運行:

INSERT INTO table (Fruit, Color) VALUES(
    Apple, Red) 

由於我的唯一關鍵的是(水果,彩色)(也ID是一個單獨的一個),我想當我的表更新時,ID列保持原樣(ID = 1);然而,當我插入上面的值時,ID自動遞增到3.

有人可以提供ON DUPLICATE KEY UPDATE語句來防止ID值在更新時增加嗎?

INSERT INTO table (Fruit, Color) VALUES(
    Apple, Red) 
ON DUPLICATE KEY UPDATE (
{statement here}) 
+0

MySQL如何知道插入哪個值?另外,我不認爲觸發在這裏是可能的。 –

回答

1

必須使主鍵ID列然後設置(水果,顏色)作爲一個獨特的關鍵。然後你可以運行@Andrew B Anthony提供的查詢:

INSERT INTO table (Fruit, Color) VALUES 
    Apple, Red) 
ON DUPLICATE KEY UPDATE 
Fruit=values(Fruit), 
Color=values (Color) 
1

您可以使用下面的查詢,如果您的(水果,顏色),將工作的唯一密鑰

INSERT INTO table (Fruit, Color) VALUES(Apple, Red) 
ON DUPLICATE KEY UPDATE 
Fruit=values(Fruit),Color=values (Color) 
+0

關閉。 ID必須是主鍵和(水果,顏色)一個唯一的鍵 – ProgrammingWithRandy

+0

@ProgrammingWithRandy它會工作,如果你的(水果,顏色)是一個獨特的關鍵 –