MySQL防止重复插入相同记录有2种常用的方法。

1 使用 INSERT IGNORE

使用 INSERT IGNORE 可以在插入具有相同主键的数据时不做重复插入。

mysql> SELECT * FROM books LIMIT 3;
+----+-------------------------+---------------------+----------------+
| id | title                   | author              | year_published |
+----+-------------------------+---------------------+----------------+
|  1 | In Search of Lost Time  | Marcel Proust       |           1913 |
|  2 | Ulysses                 | James Joyce         |           1922 |
|  3 | Don Quixote             | Miguel de Cervantes |           1605 |
+----+-------------------------+---------------------+----------------+
3 rows in set (0.00 sec)

示例的表里有一个主键,名为id。

如果直接重复插入,会报错:

mysql> INSERT INTO books(id, title, author, year_published)
VALUES(1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

如果使用INSERT IGNORE,会不做重复插入:

mysql> INSERT IGNORE INTO books(id, title, author, year_published)
VALUES(1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 0 rows affected (0.00 sec)

2 使用replace

使用replace替代insert实现的原理是:
如果表中存在匹配的数据,那么先删除,再插入;
如果表中不存在匹配的数据,那么直接插入。

示例如下:

mysql> REPLACE INTO books(id, title, author, year_published)
VALUES(1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)

这里显示2行受影响是因为先删除后插入

MariaDB/MySQL防止重复插入相同记录:INSERT IGNORE或者REPLACE相关推荐

  1. MySQL防止重复插入唯一限制的数据 4种方法

    MySQL防止重复插入唯一限制的数据,下面我们逐一分析 : 1.insert ignore into  当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回.所以使用ignore请确 ...

  2. MySql避免重复插入记录的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)

    案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下 复制代码 1 INSERT IGNORE INTO table ...

  3. MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

    本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考. 案一:使用ignore ...

  4. Mysql 之 插入数据(insert into 、 replace into 解析)

    Mysql 插入数据 1.插入数据方法 mysql中常用的三种插入数据的语句: insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错: replace i ...

  5. MySQL数据库13——插入数据(INSERT)

    下面的语句用于向student表插入数据. 插入语句: INSERT INTO student(ID,name,sex,birthday,origin,contact1,contact2,instit ...

  6. MySQL索引重复插入数据报错

    项目场景: 针对数据量大的表其主键索引加了索引长度 问题描述: 建表的时候在主键索引上加了索引长度PRIMARY KEY (id(4)),后期插入数据到一定数量后导致索引重复插入数据库报错. PRIM ...

  7. MySQL的insert ignore与replace into不同

    以前从来没有接触过replace into这个语法,但是却看到很多人都在使用这个语法,并且应用在很多生产环境中,于是我也去学习了一下repalce into的用法. 关于replace 一句话:正常情 ...

  8. insert into与insert ignore以及replace into的区别

    insert ignore表示,如果表中已经存在相同的记录,则忽略当前新数据: INSERT INTO有无数据都插入,如果主键则不插入; REPLACE INTO 如果是主键插入则会替换以前的数据; ...

  9. 在MySql中,这四种方法可以避免重复插入数据!

    前言 MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下四种插入方式避免错误. insert ignore. replace into insert on duplicate k ...

最新文章

  1. CentOS 7 安装 GlusterFS
  2. 编写一个关于小型界面文件。
  3. 转 Debugging AutoCAD 2017 using Visual Studio 2015
  4. Java Socket传输数据的文件系统介绍
  5. 阿里云接入的认证方式,一机一密、一型一密、动态注册
  6. jQuery的选择器——可见性过滤选择器
  7. 20145324 20145325 《信息安全系统设计基础》实验三
  8. 项目整合一级缓存和二级缓存
  9. 在XUnit中用Moq怎样模拟EntityFramework Core下的DbSet
  10. python自带的解释器叫做_python学习
  11. 机器学习-KMeans聚类 K值以及初始类簇中心点的选取
  12. pdf复制json不全的问题
  13. poi-tl导出word出错
  14. 主机和服务器之间有何区别?
  15. 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
  16. SpringBoot之从零搭建博客网站
  17. 前端面试题(react)
  18. c++中的 单引号和双引号
  19. 全国首个民企卫星智能AIT中心落户浙江台州 吉利全面布局商业卫星领域
  20. 如何解决NSIS 2G文件的限制

热门文章

  1. 3 calender python_python3笔记二十一:时间操作datetime和calendar
  2. 研究生应锻炼的24种能力
  3. EID:宏基因组测序在新发腹泻病毒鉴定中的应用
  4. Microbiome:扩增子检测环境样本单细胞真核生物和寄生虫的新方法
  5. Microbiome:扩增子16S分析苏铁类植物微生物组
  6. metaSPAdes:新型多功能宏基因组拼接工具
  7. 等我搞研究发财了,我就......
  8. R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format)、指定单个标识符、、表格转化的时候值不唯一设置聚合函数(均值)
  9. R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)、ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节
  10. R语言distHaversine函数计算大圆距离实战