" INSERT INTO .. ON DUPLICATE KEY UPDATE"只插入新条目而不是替换?

时间:2015-01-27 22:03:51

标签: mysql sql-server insert duplicates

我有一个表,比如table1,它有3列:id,number和name。 id是auto_incremented。

我想实现一个将条目插入表中的sql语句,但是如果该行已经存在,则忽略它。

然而,

每次我跑:

INSERT INTO table1( number, name) 
VALUES(num, name) 
ON DUPLICATE KEY 
UPDATE number = VALUES(number), 
       name = VALUES(name)

似乎忽略了具有匹配的数字和名称值的行,并将条目附加到表的末尾,无论如何。

我能做些什么来防止这种情况发生?我有一种感觉,它与auto_incrementing主键有关? 感谢

1 个答案:

答案 0 :(得分:0)

在数字和名称上创建唯一的复合索引。

Alter table table1 Add unique index idx_unq(`number`,`name`);

然后执行Insert Ignore INTO table1(number,name) VALUES(num, name);

这样可以防止重复插入表格。

Useful link on Unique indexes