Mysql 如果不存在,则插入,如果存在,则增加

Mysql 如果不存在,则插入,如果存在,则增加,mysql,Mysql,我的问题是。我在MySQL中有一个“popular”表,其中包含“id”、“title”、“popularity”字段。若信息不存在,我需要在“标题”字段中插入信息;若信息存在,则需要在“流行度”的增量值中插入信息。最好的做法是什么? 确保对title id=LAST\u INSERT\u id(id)允许您使用LAST\u INSERT\u id(或MySQL API的等效函数)获取插入/更新的记录的id。如果您不需要id,可以将其从更新列表中删除。示例代码: 参考资料: 如果两个线程使用

我的问题是。我在MySQL中有一个“popular”表,其中包含“id”、“title”、“popularity”字段。若信息不存在,我需要在“标题”字段中插入信息;若信息存在,则需要在“流行度”的增量值中插入信息。最好的做法是什么?

确保对
title

id=LAST\u INSERT\u id(id)
允许您使用
LAST\u INSERT\u id
(或MySQL API的等效函数)获取插入/更新的记录的
id
。如果您不需要
id
,可以将其从更新列表中删除。

示例代码:

参考资料:


如果两个线程使用相同的名称同时调用,则会引发重复的密钥错误。您需要锁定select中的行,并确保整个事务在单个事务中运行。
INSERT INTO popular (title, popularity) VALUES (:the_title, 1)
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), popularity = popularity + 1
if exists (select * from contact where name = @name) then
    select -1;
else
    insert into contact(name) values(@name);
    select last_insert_id();
end if;