MySQL INSERT IGNORE或ON DUPLICATE KEY DO_NOTHING

时间:2012-04-28 16:57:32

标签: mysql

已经搜索过这些主题并找到了2种不同的解决方案,但没有人工作。

我的桌子有结构| ID(auto_increment primary_key)| UID(int)| FAV_ID(int)|

如果已经存在UID和FAV_ID(两者),我需要向此FAV_TABLE插入新记录。

我的查询示例:

INSERT INTO FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id) ON DUPLICATE KEY UPDATE  uid = uid 

或者这个

INSERT IGNORE FAV_TABLE (uid, fav_id) VALUES ($u_id,$s_id);

正如mysql手册所说,只有当PRIMARY_KEY相同时,此查询才会添加记录。 如果对uid + fav_id是唯一的,我需要查询不添加记录。 有解决方案吗谢谢

2 个答案:

答案 0 :(得分:4)

您需要在这些列上添加UNIQUE KEY

ALTER TABLE FAV_TABLE ADD UNIQUE KEY(uid, fav_id);

答案 1 :(得分:2)

INSERT IGNOREON DUPLICATE KEY仅在复制唯一键时才有效。

您需要在UNIQUEuid字段上添加fav_id索引。 这样,当您插入重复对时,它将被忽略。