前言
replace into 跟 insert into 功能类似,不同点在于:replace into 首先尝试插入数据到表中
- 如果发现表中已经有相同的数据(根据主键或者唯一索引判断)则先删除原来的数据,然后插入新的。
- 否则,直接插入新数据。
注意:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
使用
创建表
CREATE TABLE `test_res_slave_current_200` (
`k` int(10) unsigned NOT NULL,
`id` int(10) unsigned NOT NULL,
`num` int(10) unsigned NOT NULL,
PRIMARY KEY (`k`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入数据
insert into test_res_slave_current_200(k,id,num) values(2404021140,1000,1000);
insert into test_res_slave_current_200(k,id,num) values(2404021140,1000,1000); // 报错 主键重复
replace into test_res_slave_current_200(k,id,num) values(2404021140,1000,1000); // 执行成功 如果主键存在且其他列数据有变更 影响行数为2,其他情况为1