防止MySQL数据库中数据的重复插入问题

        我们这里是做了一个数据的接入问题,需要不停的向数据库中写入数据,那这些数据中有的是重复的,重复的数据写入数据库既没有意义,也浪费内存空间,所以我们需要想一个办法来解决数据重复插入的问题。

现在我自己模拟三条数据来做一个数据的写入,正常的insert语句sql为INSERT INTO tb_user (username,ped,edit_time) values("小明",1,2018....),..

这里有三个解决方法:

1、利用ignore关键字

方法原理:忽略了有唯一索引字段的相同数据,只添加不同的数据,成功的操作条数是添加的真实条数,若没有ignore关键字会报错

sql为:INSERT IGNORE INTO tb_user (username,ped,edit_time) values("小明",1,2018....),..;

说明:但使用次方法就必须表中有某个字段是具有唯一性或约束性的,如果你的字段没有的话,执行完该语句和普通的insert语句结果没有区别

现在是添加唯一索引的方法:ALTER TABLE `t_user` ADD unique(`edit_time`); 我这里是给edit_time添加了唯一索引,大家可以按照自己的表结构来选取唯一索引的添加。

2、利用Replace关键字

方法原理:将相同的字段数据直接先删掉,再重新添加,,成功之后显示操作条数的是删除的条数加上新添加的条数

sql为:Replace INTO tb_user (username,ped,edit_time) values("小明",1,2018....),..;

扫描二维码关注公众号,回复: 2496609 查看本文章

说明:该方法与方法一类似,再没有唯一约束性时与普通的insert没有区别

3、ON DUPLICATE KEY UPDATE语句

说明:你也可以在INSERT INTO…..后面加上 ON DUPLICATE KEY UPDATE方法来实现。如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。


猜你喜欢

转载自blog.csdn.net/m_y_y/article/details/80700958