小任班长的博客 - Mysql DUPLICATE KEY
type: channel
link: https://cnxiaocheng.top/tag/Mysql-DUPLICATE-KEY/
items: MySQL判断当记录不存在时insert，记录存在时update

MySQL判断当记录不存在时insert，记录存在时update
type: item
date: 2018-12-17T09:00:00+08:00
description: MySQL当记录不存在时insert，当记录存在时update如果指定了ON DUPLICATE KEY UPDATE，并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值，则执行旧行UPDATE。 下面举例说明：设备使用表equipment_used_log，主键id、代理商、设备、使用日期。下图三个列定义成唯一索引。- 业务需求是记录每个代理商的某一设备每天的使用量按照最一般的方法是先查询是否存在，存在则更新不存在则插入。这样会有并发问题。加同步块会影响性能。使用下列语句即可实现：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;