mysql replace into 实现存在则更新,不存在则插入
测试用的mysql数据库:
新建测试表:
CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`text` varchar(255) DEFAULT NULL,
`uid` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uid_unique` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以上建表三个字段,id是主键自增,bigint类型。uid是字符串,但是加上了唯一约束’uid_unique‘。
(1) 添加新的数据
因为库里面没有新的数据,所以肯定是产生一条数据。
(2) 产生一条新的数据,和 id 以及 uid都不冲突的
这个时候,因为id是主键自增的,所以这个时候,会产生一个次于最大值的值,就是1002
(3)现在测试 id冲突,但是 uid不冲突的
发现会以id为 依据进行替换。
(4)测试uid冲突,但是id不冲突的。
结果:
发现会根据uid进行替换。
(5)当id和uid都冲突的时候
发现会根据这些进行替换。
(6)当uid冲突的时候,且自增主键,id为空的时候
发现这个时候会删除这条信息,然后新生成一个id。
综上所述,总的来说replace into 操作的结果是: 首先会判断是否存在冲突,可以是主键冲突,也可以是唯一约束。 然后删除这些数据,然后再插入数据。删除数据后插入的效果就跟insert into是一样的。
mysql replace into 实现存在则更新,不存在则插入的更多相关文章
- MySQL "replace into" 的坑
MySQL 对 SQL 有很多扩展,有些用起来很方便,但有一些被误用之后会有性能问题,还会有一些意料之外的副作用,比如 REPLACE INTO. 比如有这样一张表: CREATE TABLE `au ...
- MySQL replace into 说明(insert into 增强版)
MySQL replace into 说明(insert into 增强版) 在插入数据到一个表时,通常是这种情况:1. 先推断数据是否存在: 2. 假设不存在,则插入:3.假设存在,则更新. 在 S ...
- MySQL replace into (insert into 的增强版)
在使用SQL语句进行数据表插入insert操作时,如果表中定义了主键,插入具有相同主键的记录会报错: Error Code: 1062. Duplicate entry 'XXXXX' for ke ...
- mysql replace into 的使用情况
replace into的存在的几种情况 当表存在主键并且存在唯一键的时候 如果只是主键冲突 mysql> select * from auto; +----+---+------+------ ...
- Mysql replace into
mysqlsql serverinsert 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以 ...
- MySQL "replace into" 的坑以及insert相关操作
下面我们主要说一下在插入时候的几种情况: 1:insert ignore 2:replace into 3:ON DUPLICATE KEY UPDATE 关于insert ignore: 关于rep ...
- MySQL replace into 用法
讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...
- mysql replace()用法
mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); 释:表tb1中字段f1中为abc的值更新为def.一般用于某字段中值存在 ...
- MySQL replace into 用法(insert into 的增强版)
转 http://blog.csdn.net/risingsun001/article/details/38977797 MySQL replace into 用法(insert into 的增强版) ...
随机推荐
- odoo开发笔记 -- 还原数据库后,异常:ir_attachment: IOError: [Errno 2] No such file or directory: u'/var/...'
场景描述: 恢复Odoo数据后,抛出错误导致无法进入页面 -- ::, INFO aeo odoo.addons.base.ir.ir_attachment: _read_file reading / ...
- github 被强了!太丧心病狂了!
github 不强了! github 不能访问了! github 打不开了! github 被封了... - ping 都 ping 不通, 本地 ping 不通, 服务器 ping 不通. - 本地 ...
- (转载)基于比较的少样本(one/few-shoting)分类
基于比较的方法 先通过CNN得到目标特征,然后与参考目标的特征进行比较. 不同在于比较的方法不同而已. 基本概念 数据集Omniglot:50种alphabets(文字或者文明); alphabet中 ...
- 【翻译】Flink Table Api & SQL — Hive —— 读写 Hive 表
本文翻译自官网:Reading & Writing Hive Tables https://ci.apache.org/projects/flink/flink-docs-release-1 ...
- Apache限制IP并发数和流量控制
使用mod_limitipconn模块限制IP并发连接数安装: wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 tar ...
- [Python] 项目的配置覆盖与合并
参考来源: https://www.liaoxuefeng.com/wiki/1016959663602400/1018490750237280 代码稍微修改了一下 import os import ...
- Linux磁盘空间查看、磁盘被未知资源耗尽
Linux系统中,当我们使用rm在Linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄, 那么Linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%, ...
- ejs不能读取js变量??????
一.问题描述 用express搭了一个nodejs服务端,为了测试接口数据是否能够正常输出,用ejs作为模版引擎的html文件写js发请求. 1.请求正常,能在network看到,但是没有输出cons ...
- Properties的有序读写
使用java.util.Properties提供的类,读取properties文件的时候,读出来的是乱序的 如下边的情况 import java.io.*; import java.util.Arra ...
- 瀚云平台kafka简单原理
客户端利用kafka 硬件 创建 productkey,cmd-productkey,conn-productkey为主题,代表设备数据,设备命令,设备事件. 客户端去订阅这三个主题 数据推送模拟器, ...