参考 :
mysql如果数据不存在,则插入新数据,否则更新的实现方法 - CooMark - 博客园
MySQL 当记录不存在时insert,当记录存在时update_阿然的专栏-优快云博客
需求 : 有一个设备,当该设备状态发生变更时把状态信息插入数据库,若已记录该设备就更新状态,不存在则插入状态信息
解决方法 :
1. 建立一张表,改表有两个字段
CREATE TABLE `device_state` (
`device_id` varchar(200) NULL COMMENT '设备id',
`state` int(1) NULL COMMENT '设备状态(1:运行中;2:停机)'
) ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
2. device_id 字段 设置唯一索引
ALTER TABLE `device_state`
ADD UNIQUE KEY `Unique_1`(`device_id`);
3. 测试
INSERT INTO `device_state`
set `state`= 1,
`device_id`= 'd1' on duplicate key
update `state`= 1
上面的sql重复执行多次,表中也只有一条数据
INSERT INTO `device_state`
set `state`= 1,
`device_id`= 'd2' on duplicate key
update `state`= 1
上面的sql执行后则会在数据库新增一条数据
总结 : 由于唯一索引的存在,只有唯一索引字段存在就更新,不存在才会插入
4.不存在则插入,存在则更新
INSERT INTO device_state (`device_id` , `state` ) VALUES
('d2',1) ON DUPLICATE KEY UPDATE state=state+1;
END。
本文介绍了一种在MySQL数据库中高效处理设备状态更新的方法。通过设置唯一索引并在SQL语句中使用ON DUPLICATE KEY UPDATE子句,实现了数据存在时更新、不存在时插入的功能。这种方法确保了数据的一致性和效率。
6626

被折叠的 条评论
为什么被折叠?



