数据库避免插入重复数据需求解决:MySQL之insert、insert ignore、replace和insert into on duplicate key update区别
背景 最近在做项目的时候,简单的后台增删改查,但是每次在做新增数据操作的时候,都需要校验一次数据库中是否存在相同的数据(唯一索引字段),起初同时的做法是每次按照唯一主键作为条件去数据库中进行查询,如果存在,则不进行insert操作,如果不存在,则进行insert操作,这样做有两个弊端: 每次进行insert操作之前都会有一步select操作,我们知道,数据库的io是比较耗性能的,尤其是在数据量比较大的情况下; 本人想偷懒,每次去查询太繁琐; 在并发场景下同意出问题,除非加锁(目前还没有这个场景,博主未验证~) 那么到底有没有什么比较爽的方式可以解决这样的问题呢? 答案是当然的! 下面就来看看博主总结的几种方式,大家可以根据情况自行选取: 1.insert 2.insert ignore 3.replace 4.insert into on duplicate key update 测试代码 创建表 CREATE TABLE `test` ( `id` int NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `age` int DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `index