我有一个表,比如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主键有关? 感谢
答案 0 :(得分:0)
在数字和名称上创建唯一的复合索引。
Alter table table1 Add unique index idx_unq(`number`,`name`);
然后执行Insert Ignore INTO table1(number,name) VALUES(num, name);
这样可以防止重复插入表格。