2011-02-04 69 views
1

嘿让我解释我的问题。我有一个MySQL表格,我在这里存储来自5个不同站点的数据馈送。现在我每天更新一次Feed。我有这个自动递增的主键FeedId。现在我所做的是当我更新来自特定网站的供稿时,我从该表中删除了该网站的以前的数据,然后输入新的数据。通过这种方式,新数据将填充到先前删除的数据占用的行中,如果此时还有更多Feed,则在表格末尾输入休息。但是FeedId对于所有新数据都是递增的。 我想要的是,存储在旧位置的订阅源保留了以前的ID,只有在最后保存的额外订阅才能获得新的增量ID。请帮助,因为我不知道如何做到这一点。重复使用mysql表中没有自动递增的行

+6

对6个问题的零接受不是帮助 – 2011-02-04 18:48:48

回答

0

根据评论将帖子标记为删除 尝试使用REPLACE INTO合并数据。 更多信息@:

http://dev.mysql.com/doc/refman/5.0/en/replace.html

+0

`REPLACE`是邪恶的应该避免的动机。他们是一种快速的方式来核实你所有的外键关系(级联删除),而不会意识到它... – ircmaxell 2011-02-04 19:00:20

3

一个更好的解决办法是设置在饲料(除了自动递增的键)的唯一关键。然后使用INSERT ON DUPLICATE KEY UPDATE

INSERT INTO feeds (name, url, etc, etc2, `update_count`) 
    VALUES ('name', 'url', 'etc', 'etc2', 1) 
    ON DUPLICATE KEY UPDATE 
     `etc` = VALUES(`etc`), 
     `etc2` = VALUES(`etc2`), 
     `update_count` = `update_count` + 1; 

的好处是,你不递增的ID,而你还在做它一个原子查询。另外,您只需更新/更改需要更改的内容。 (请注意,我包括update_count列以显示如何更新字段)...