如果插入时该行的主键已经存在,Mysql可以自动替换该行吗?


can Mysql replace row automatically if primary key for that row already exist at insertion time?

我正在构建一个web-scraper,从网站中提取数据并将其存储在数据库表中。表的主键是{timestamp+websitename}。时间戳是从那个网站上取下来的。每30分钟发生一次。

有两种可能a)我获得了相同的数据b)在该网站上编辑的内容,但自创建时间(这篇文章的时间戳)以来主键仍然保持不变,网站名称保持不变。

现在我不想用PHP检查是否存在相同的主键。我只想让数据被推入数据库而不会出现完整性约束错误。我想提高效率。有办法做到这一点在Mysql ?.

简单来说,如果已经存在具有相同主键的行,只需将其替换为当前行,而不必对我抛出完整性约束。

可以,使用REPLACE INTO语句。

这里有一个很好的总结和注意事项

如果你使用简单的插入,看一下:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html