我在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字段的记录?
答案 0 :(得分:1)
您的ON DUPLICATE KEY UPDATE ...
必须已有WHERE
条款。你没有告诉我们,所以这是猜测。
您可以根据WHERE
列以及从应用程序传递的值合并last_updated
条件。它看起来像这样。
WHERE <<incoming_id>> = id
AND <<incoming_last_updated>> > last_updated
如果您的传入last_updated
值早于或等于表中已有的值,则此WHERE
子句不匹配任何行,因此您的...UPDATE...
不执行任何操作。