如何在重复密钥更新时禁用自动递增ID?

时间:2016-06-14 01:46:01

标签: mysql

我认为这很容易解决,但我遇到了麻烦。我正在将记录插入到具有自动递增ID的表中。在重复密钥更新时,我希望自动递增ID保持不变(不更新)。例如,假设我有下表:

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

然后我跑:

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

由于我的唯一键是(Fruit,Color)(也是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})

2 个答案:

答案 0 :(得分:1)

您可以使用以下查询,如果您的(水果,颜色)是唯一键

,它将起作用
INSERT INTO table (Fruit, Color) VALUES(Apple, Red)
ON DUPLICATE KEY UPDATE 
Fruit=values(Fruit),Color=values (Color)

答案 1 :(得分:1)

必须使主键成为ID列,然后将(Fruit,Color)设置为唯一键。然后你可以在下面运行@Andrew B Anthony提供的查询:

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