分类 Mysql 下的文章

MySQL当记录不存在时insert,当记录存在时update

如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。

下面举例说明:

设备使用表equipment_used_log,主键id、代理商、设备、使用日期。
下图三个列定义成唯一索引
68467-chs9mznwb2f.png

- 业务需求是记录每个代理商的某一设备每天的使用量

按照最一般的方法是先查询是否存在,存在则更新不存在则插入。这样会有并发问题。加同步块会影响性能。
使用下列语句即可实现:

INSERT INTO equipment_used_log(id,agent_info_id,equipment_id,log_date,USED_NUM)
VALUES ('1238','1','1','2018-12-18',0)
ON DUPLICATE KEY UPDATE USED_NUM=USED_NUM+1;
免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系238611804@139.com。我们会在24小时内进行删除。