一尘不染

对重复键忽略吗?[重复]

mysql

这个问题已经在这里有了答案

“ INSERT IGNORE”与“ INSERT…ON DUPLICATE KEY UPDATE”

(11个答案)

6年前关闭。

我正在尝试完成此查询;我的标签字段设置为UNIQUE,我只是希望数据库忽略任何重复的标签。

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY IGNORE '*the offending tag and carry on*'

甚至可以接受

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY UPDATE '*the offending tag and carry on*'

阅读 240

收藏
2020-05-17

共1个答案

一尘不染

建议不要使用INSERT IGNORE,因为它会忽略所有错误(即,草率的全局忽略)。相反,由于在您的示例中tag是唯一键,请使用:

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c') ON DUPLICATE KEY UPDATE tag=tag;

在重复键上产生:

查询正常,受影响的0行(0.07秒)

2020-05-17