较旧的last_updated记录时忽略插入

时间:2018-03-12 12:55:38

标签: mysql sql mariadb

我在Maria DB中有一个包含多个列的表。

很可能已经存在具有相同密钥但稍微较旧数据的记录。而且我总是需要在数据库中拥有更新的记录。

因此,要插入我使用的数据

insert into ... on duplicate key update

然后:

name = values(name), heart_rate= values(heart_rate), last_updated = values(last_updated) etc

问题在于,由于网络拥塞,较旧的值可能晚于更新的值。插入的每条记录也都有一个last_updated字段,这是一个日期。

如果新接收的记录的last_updated在

中执行
insert into ... on duplicate key update

我希望它被忽略。这可能吗?有没有办法让我的数据库只有最近last_updated字段的记录?

1 个答案:

答案 0 :(得分:1)

您的ON DUPLICATE KEY UPDATE ...必须已有WHERE条款。你没有告诉我们,所以这是猜测。

您可以根据WHERE列以及从应用程序传递的值合并last_updated条件。它看起来像这样。

 WHERE <<incoming_id>> = id
   AND <<incoming_last_updated>> > last_updated

如果您的传入last_updated值早于或等于表中已有的值,则此WHERE子句不匹配任何行,因此您的...UPDATE...不执行任何操作。