参考 :
需求 : 有一个设备,当改设备状态发生变更时把状态信息插入数据库,若已记录该设备就更新状态,不存在则插入状态信息
解决方法 :
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执行后则会在数据库新增一条数据
总结 : 由于唯一索引的存在,只有唯一索引字段存在就更新,不存在才会插入
END。