精华内容
下载资源
问答
  • 如何避免MySql数据库重复插入数据

    千次阅读 2020-09-10 14:51:45
    通常我们需要避免数据库重复插入操作的时候会给表设置主键或唯一索引,当插入重复数据的时候抛出异常,程序终止,但是这样也会存在一定的麻烦,所以就需要我们能尽量的避开或忽略异常。为了演示,我们新建一个User...

    通常我们需要避免数据库重复插入操作的时候会给表设置主键或唯一索引,当插入重复数据的时候抛出异常,程序终止,但是这样也会存在一定的麻烦,所以就需要我们能尽量的避开或忽略异常。为了演示,我们新建一个User测试表,包括字段id、username、sex、addr四个字段,其中主键为id(自增),同时对username字段设置唯一索引。

    一:insert ignore into

    即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引

    insert ignore into user(username,sex,addr) values('LISI','man','dongbei');

    二:on duplicate key update

    即插入数据时,如果数据存在,则执行更新操作,前提条件是插入的数据字段设置了主键或唯一索引

    insert into user(username,sex,addr) values('LISI','man','dongbei')
    on duplicate key update sex = 'man',addr='dongbei';

    三:replace into

    即插入数据时,如果数据存在则删除在插入,前提条件是插入的数据字段设置了主键或唯一索引

    replace into user(username,sex,addr) values('LISI','man','dongbei')

    四:insert if not exists

    即insert into …select…where not exist…;这种方式适合没有设置主键或唯一索引的数据,当插入一条记录时首先判断是否存在这样一条记录,不存在插入,存在忽略操作

    insert into user(username,sex,addr) 
    	select 'LISI','man','dongbei' from user
    	where not exists 
    	(select username from user where username = 'LISI')
    展开全文
  • mysql数据库避免重复数据插入

    万次阅读 2018-06-29 15:42:20
    修改sql语句在插入时 避免重复插入 网上看了几个博客都是设置唯一索引 使用ignore或者REPLACE INTO 或者ON DUPLICATE KEY UPDATE https://www.cnblogs.com/Eric-zhao/p/6655994.html http...

    mysql数据库中避免重复数据插入

    首先 数据库中已经存在重复数据 并且数据量很大 之前并没有设置重复字段为唯一索引
    需求:
    修改sql语句在插入时 避免重复插入

    网上看了几个博客都是设置唯一索引 使用ignore或者REPLACE INTO 或者ON DUPLICATE KEY UPDATE

    on duplicate key update

    如果数据存在会触发更新操作 执行后面语句的update
    INSERT INTO tb_addrbook(num,name,mobile) VALUE('1001','小李','13112345678') ON DUPLICATE KEY UPDATE name= '小李',mobile='13112345678'

    ON DUPLICATE KEY UPDATE 之后的语句不是条件判断 条件的判断会根据你的唯一索引来判断 触发update之后会执行 UPDATE之后的语句进行更新 如果update之后写的是条件判断的话 就会出现只能插入无法更新的操作

    replace into

    如果数据存在就删除再插入
    REPLACE INTO `student`(`name`, `age`) VALUES('Jack', 18);

    insert ignore into

    如果插入时 数据存在则忽略此次插入数据
    INSERT IGNORE INTO `student`(`name`, `age`) VALUES('Jack', 18);
    下面是参考链接:
    https://www.cnblogs.com/Eric-zhao/p/6655994.html

    https://blog.csdn.net/t894690230/article/details/77996355

    但是当你的数据库中数据存在重复 重复字段并没有设置唯一索引或者主键的时候上面的语法是无法使用的 后来发现使用 insert if not exists

    insert if not exists

    INSERT INTO TABLE (field1, field2, fieldn) SELECT 'field1','field2','fieldn'
    FROM
    表名
    WHERE
    NOT EXISTS (
    SELECT
    *
    FROM
    表名
    WHERE
    字段= ?
    )

    参考链接:
    https://blog.csdn.net/fly910905/article/details/79634483

    展开全文
  • 本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,有需要的朋友可以参考一下
  • 不想复制粘贴,转载:如何避免在MySQL数据库重复插入数据?
    展开全文
  • 数据库防止插入重复

    千次阅读 2020-03-02 22:29:07
    今天敲代码时,突然想到自己以前在做数据库插入数据时,为了防止重复,都会把将要插入的数据再通过数据库查询一遍,以前就觉得十分的麻烦,但是那时候没时间搞一下,后来就忘了,正好今天想起来了,并且在群里问了...

    引言

    今天敲代码时,突然想到自己以前在做数据库插入数据时,为了防止重复,都会把将要插入的数据再通过数据库查询一遍,以前就觉得十分的麻烦,但是那时候没时间搞一下,后来就忘了,正好今天想起来了,并且在群里问了一些大佬,问了他们的实现方法,现在做个总结。

    -------------------------------------------------尴尬的分割线---------------------------------------------

    方法一:
    设置唯一索引,如果插入重复的数据,会报DuplicateKeyException,捕获这个异常,返回msg-“插入数据重复”。
    这也是我今天想到的方法。

    方法二:
    使用发号器,虽然能很大程度上保证几乎不会重复,但是生成出来的id,是一个带有趋势的id,如递增或递减或摆动(也可以说是有意图的趋势),如果对于一些手动数据的id,很随意的id,或数字和字母组合,可能就不是那么合适了,不过这也算一种方法,只不过要看情况使用。

    我也是第一次听说发号器,所以读者和我一样不了解发号器的可以自行百度一下,网上的资料很多。

    方法三:
    布隆过滤器,这倒是一个从来没听说过的东西(听群里大佬说在做爬虫的时候会用到这个,看来如果有机会要学一学爬虫了),用的是散列有关的思想,但是如果数据库中的数据过于庞大,这种方法的效率还是会下降的,并且这种方法有误错率,数据量越大,误错率越大,由此看来,并不是我想要的那种效果。

    感兴趣的读者可以自行百度一下。
    在这里插入图片描述

    展开全文
  • ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:目前,就分享这4种MySQL处理重复数据的方式吧,前...
  • MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下三种插入方式避免错误。 insert ignore。 replace into insert on duplicate key update insert ignore insert ignore 会忽视数据库中已经...
  • 最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下...
  • 为了减少数据量,我们不希望重复数据插入到一张表中,之前使用的都是查询出相应的数据,然后与被插入的数据进行比较,判断是否插入数据库。 后面想到一种新方式,不用2次数据库交互----使用exisits insert into ...
  • 对于第一种重复,比较容易解决,只需在查询语句中使用distinct关键字去重,几乎所有数据库系统都支持distinct操作。发生这种重复的原因主要是表设计不周,通过给表增加主键或唯一索引列即可避免。 select distinct *...
  • 避免重复插入数据库

    千次阅读 2018-03-22 14:43:36
    避免重复插入数据库use [RYPlatformDB] if not exists (select * from DataBaseInfo where DBInfoID = 1) INSERT [DataBaseInfo] (DBAddr, DBPort, DBUser, DBPassword) VALUES ( '127.0.0.1' , 1433 , 'sa', '...
  • 当通过账号登陆时,我从服务器中获取联系信息,我把这些信息储存在SQLite中,当用户第二次登录时,我不希望再次插入 SQLite 数据库重复的联系信息。...如何避免第二次登录时,插入重复的数据到SQLite数据库中?
  • 避免重复插入,又不想折腾两回数据库连接操作 参考于:http://snowolf.iteye.com/blog/1568926 INSERT INTO table(column1,column2,column3 ...columnN) SELECT value1,value2,value3 ...valueN FROM dual ...
  • MySQL 避免重复插入时如何写SQL

    千次阅读 2019-04-09 11:08:42
    假设红色部分为我在代码中需要插入的部分。 说明:下面的SQL语句示例是我用于Python中的代码片段,所以使用了%s的写法,如果直接写SQL或想要在其他语言中使用只需稍作修改。 方式1:使用ignore关键字 INSERT ...
  • 文章目录基础概念原因分析解决方案多线程插入解决:多线程更新解决 基础概念 幂等性 : 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 简单来说:幂等就是一个操作,不论...
  • ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略: 目前,就分享这4种MySQL处理重复数据的方式吧,...
  • 1.使用Primary Key,Unique Key等在数据库层面让重复数据无法插入。 2.插入时使用条件 insert into Table(****) select **** where not exists(select 1 from Table where ****); 3.使用SERIALIZABLE隔离级别,并且...
  • 所有的方法都先不考虑性能问题,也不考虑业务,只看逻辑上能否达到去重复插入,因为第一,如果唯一性是必须要保证的,那么只能在先实现了,再去考虑优化;第二,如果能通过调整业务来规避,那我后面说的都是废话了...
  • 导致数据被多次插入,而Id是自动生成的,于是在数据库中有了很多重复的脏数据,为了解决该问题,就需要在sql级别加入限制,已经存在的数据不作任何操作,避免重复插入,而且可以避免重复连接两次数据库. 语法格式: ...
  • 昨天面试,被面试官问到。。。 比如用户注册时,先要验证用户名是否存在,但是在验证过后可能还会被插入相同用户名的数据,这就造成了冲突。 应该怎么解决?
  • insert or replace into table_name( id,type) values (1,0); insert or ignore into table_name (id,type) values (2,0); IF NOT EXISTS(SELECT * FROM table_name WHERE ….) THEN INSERT INTO ......
  • 并发避免数据库插入重复数据

    千次阅读 2019-04-20 11:59:34
    一、怎么避免数据库插入重复数据 用的 SqlServer 可以用直接添加索引的方式 具体操作步骤见下链接 https://www.cnblogs.com/vuenote/p/9668410.html 二、清空数据表中的数据 1:truncate table table_name(要...
  • SQL如何避免重复插入主键

    千次阅读 2019-07-31 12:11:55
    要求:要求使用数据库插入语句往表中插入数据,若需要插入表中的数据(或者数据的主键)如果已经在表中存在,那么要求SQL在执行的时候不能报错。 例如:插入一行id=3,name=丁老师,salary=5000的记录, insert ...
  • Java防止重复数据多次调用接口导致数据库插入重复记录
  • mybatis防重复插入(oracle数据库)

    千次阅读 2019-07-03 08:49:41
    //使用mybatis标签控制是否防重复插入 ​<insert id ="insertLog"> INSERT INTO HMAOP_HEAD_CHECKIN ( ID, TELNUM, CHANNELID, SRVID, PARAMS, UPDATETIME, OPERSTATUS, STATUS, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,978
精华内容 57,991
关键字:

数据库避免重复插入