覆盖唯一索引值

时间:2010-06-17 09:38:45

标签: php mysql

这就是我现在正在做的事情(nameUNIQUE):

SELECT * FROM fruits WHERE name='apple';
  

检查查询是否返回任何内容   结果。如果是,请不要做任何事情。如果   不,必须插入新值:

INSERT INTO fruits (name) VALUES ('apple');

可以将值插入表中而不检查它是否已存在,而不是上面的代码?如果表中已存在该名称,则将引发错误,如果不存在,则将插入新记录。

现在我不得不在for循环中插入500条记录,这会产生1000条查询。可以跳过“已存在”检查吗?

2 个答案:

答案 0 :(得分:4)

您可以使用IGNORE功能:

INSERT IGNORE INTO fruits VALUES ('apple')

如果存在密钥违规,则只会跳过此值

答案 1 :(得分:2)

结帐

INSERT IGNORE INTO ...

INSERT ON DUPLICATE KEY UPDATE ...

第二种方法是首选方法,因为IGNORE语句只会导致mysql发出警告而不是错误