MySQL避免插入重复记录的方法 (主键/唯一索引重复则忽略此条数据或更新原有数据)

本文主要是介绍MySQL避免插入重复记录的方法 (主键/唯一索引重复则忽略此条数据或更新原有数据),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

表(注意唯一约束)


-- ----------------------------
-- Table structure for star_platform
-- ----------------------------
DROP TABLE IF EXISTS `star_platform`;
CREATE TABLE `star_platform` (`platform_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`platform_source` int(5) NOT NULL DEFAULT '0' COMMENT '平台编号',`platform_source_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '平台名',`note` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',PRIMARY KEY (`platform_id`),UNIQUE KEY `unique_source` (`platform_source`,`platform_source_name`) USING BTREE COMMENT '用于约束平台唯一性'
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台(任务源)';SET FOREIGN_KEY_CHECKS = 1;-- 插入一条初始数据  (Affected rows: 0)
insert into star_platform (platform_source,platform_source_name) values (1,"平台名");-- insert ignore into ...  忽略:忽略主键或唯一索引重复的数据,注意执行结果中的受影响行数 (Affected rows: 0)
insert IGNORE into star_platform (platform_source,platform_source_name) values (1,"平台名");-- replace into ...    有重复数据则替换(删除再插入,注意看主键id值)   受影响行数(Affected rows: 2)
replace into star_platform (platform_source,platform_source_name) values (1,"平台名");-- insert ...  on duplicate key update ...  有重复数据则更新update后的数值 受影响行数(Affected rows: 2)
INSERT INTO star_platform (platform_source, platform_source_name, note)VALUES ( 1, "平台名", "备注")ON DUPLICATE KEY UPDATE platform_source_name = "平台名2",note = "备注2";

 

1、插入或忽略

insert ignore into ...    :主键或唯一索引不重复,执行插入;重复,则不插入,但是会占用一个自增主键值(如:上一条数据主键id值为1,则 ignore 语句执行并忽略一条重复数据后,则再次insert时,id值会是3)

insert IGNORE into star_platform (platform_source,platform_source_name) values (1,"平台名")

2、插入或替换(删除并新增数据)

replace into ...   :主键或唯一索引不重复,执行插入;重复,则先删除重复数据,然后重新插入新数据(主键值会改变)

replace into star_platform (platform_source,platform_source_name) values (1,"平台名")

3、插入或更新

insert ...  on duplicate key update ...  :主键或唯一索引不重复,则插入;重复,则修改UPDATE后的数据(主键值不变

INSERT INTO star_platform (platform_source, platform_source_name, note)
        VALUES ( 1, "平台名", "备注")
        ON DUPLICATE KEY UPDATE platform_source_name = "平台名2",note = "备注2";

 

参考:

https://www.cnblogs.com/prayer21/p/6018864.html

https://www.2cto.com/database/201308/234179.html

这篇关于MySQL避免插入重复记录的方法 (主键/唯一索引重复则忽略此条数据或更新原有数据)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917643

相关文章

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

如何将Python彻底卸载的三种方法

《如何将Python彻底卸载的三种方法》通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Pyth... 目录软件卸载①方法:②方法:③方法:清理相关文件夹软件卸载①方法:首先,在安装python时,下

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表