如果我编写的系统每隔[[n分钟检查API是否有新消息,这是更好的做法? (每条消息都有一个唯一的ID,该ID在我的系统中用作主要ID。)
您是否愿意:让数据库完成工作。如果不想重复,则在列上创建唯一索引。我的猜测是:
create unique index unq_messages_messageid on messages (mesageid);
((如果您确实需要,也可以在字符串或多列上使用。)一旦有了唯一索引或约束,以下是我建议的两种方法。
(1)只需插入一下即可。如果重复,它将失败。处理应用程序代码中的错误。好的应用程序代码可以处理错误。
((2)使用
on duplicate key update
(这一天可能会被on conflict ignore
代替):
insert into messages ( . . . ) values ( . . .) on duplicate key update message_id = values(message_id);
该任务是无人操作-它什么都不做。为什么比
insert ignore
更受欢迎?原因很简单:它仅处理重复键的特定错误。可能发生的其他错误仍返回到应用程序。