mysql 自增id replace_MySQL--REPLACE INTO与自增
##=====================================================================##
测试环境:
MySQL版本:MySQL 5.7.19
复制模式:ROW
##=====================================================================##
执行下面操作:
##测试脚本:CREATE TABLET_AUTO_TEST
(
IDINT AUTO_INCREMENT PRIMARY KEY,
C1INT NOT NULL,UNIQUE KEYUNI_C1(C1)
)INSERT INTO T_AUTO_TEST(ID,C1)VALUES(99,99);REPLACE INTO T_AUTO_TEST(ID,C1)VALUES(101,99);
##在主库上和从库上查看该表当前自增值:SELECTTABLE_SCHEMA,TABLE_NAME,AUTO_INCREMENTFROMinformation_schema.tablesWHERE table_name='T_AUTO_TEST';
##发现主库上自增值为102,而从库上为100,当主从发生切换后,正常插入数据:INSERT INTO T_AUTO_TEST(C1)VALUES(103);INSERT INTO T_AUTO_TEST(C1)VALUES(104);
发生报错:
ERROR 1062 (23000): Duplicate entry '101' for key 'PRIMARY'
##=====================================================================##
原因分析:
1、在MySQL中,只有INSERT语句才能导致表的自增ID发生变化,
2、在主库上执行REPLACE INTO时,由于唯一索引列上存在数据冲突,先删除重复数据再插入新数据,插入操作导致主库上表的自增初始值发生变化。
3、步骤2操作在主库上执行提交后,按照数据更新情况,BINLOG中会生成UPDATE类型的日志,UPDATE操作并不触发从库上自增初始值发生变化。
4、主从发生变化后,从库的自增值从100开始增加,当增加到102时,当前表中已存在102的记录,因此报主键重复。
##=====================================================================##
总结:
1、REPLACE INTO属于MySQL特有语法,在使用过程中,应避免REPLACE时对自增列进行数据更新。
##=====================================================================##
mysql 自增id replace_MySQL--REPLACE INTO与自增相关推荐
- SQL 2008 使用insert into 语句时自增ID插入数据时实现自增ID
SQL 2008 使用insert into 语句时自增ID插入数据时实现自增ID 建立一张User表 使用insert into 语句插入一行新的数据 结果如下
- mysql自增id存在哪里_mysql返回自增id
在mysql操作中执行insert,是没有自增id返回的,这就对于后续编写逻辑造成了很大不便. 其实有几种方法可以做到insert后直接获取到自增id. 1.执行select max(id); 原理是 ...
- mysql generatedkey_Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查...
今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都 ...
- MySQL 使用自增ID主键和UUID 作为主键的优劣比較具体过程(从百万到千万表记录測试)...
測试缘由 一个开发同事做了一个框架.里面主键是uuid.我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿 ...
- MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)...
Reference: https://blog.csdn.net/mchdba/article/details/52336203 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不 ...
- 有关于mysql自增型需要返回id_关于mysql自增id,你需要知道的
关于mysql自增id,你需要知道的,主键,重启,索引,类型,字段 关于mysql自增id,你需要知道的 易采站长站,站长之家为您整理了关于mysql自增id,你需要知道的的相关内容. 导读:在使用M ...
- MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(500W单表)
测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了说 ...
- Mysql自增id理解
MySQL自增ID 1. 什么是自增id 自增ID是在设计表时如果将id字段的值设置为自增的形式也就是AUTO_INCREMENT,那么当插入一行数据时就无需指定id,数据表会根据前一个id值+1进行 ...
- 分布式ID-数据库自增ID
第一种方案仍然还是基于数据库的自增ID,需要单独使用一个数据库实例,在这个实例中新建一个单独的表: 表结构如下: CREATE DATABASE `SEQID`;CREATE TABLE SEQID. ...
- 关于自增id 你可能还不知道
导读:在使用MySQL建表时,我们通常会创建一个自增字段(AUTO_INCREMENT),并以此字段作为主键.本篇文章将以问答的形式讲述关于自增id的一切. 注: 本文所讲的都是基于Innodb存储引 ...
最新文章
- 北京电影学院发了一篇满是数学公式的计算机顶会论文,并开源了其代码(附链接)...
- 微前端之qiankun
- SAP Spartacus 基于行项目的订单取消功能(order cancel)实现
- 【BIM入门实战】建筑墙体知识全攻略
- access month函数用法_学会了这7个EXCEL日期函数技巧,老板再让你加班,你找我!...
- 阿里java架构师面试128题含答案:分布式架构+Dubbo+多线程+Redis
- 8种常见SQL错误用法,你犯过几个?
- 浅入浅出 MySQL 索引
- WCF分布式开发常见错误(17):无法启动MSMQ服务
- 学写网站(二)前端配置之glup
- Semantic Nets
- java.lang.NoClassDefFoundError:org.ksoap2.seri...
- 令人惊艳的NanoPC-T4(RK3399)作为工作站的初始配置和相关应用
- 7-6 536 判定子串
- win10 tensorflow-gpu1.4 rtx2060 安装详细教程 fater-rcnn
- STC用PCA测量脉宽_超快激光脉冲测量和诊断使用自相关仪
- 计算机论文字数要求吗,2016年夏季学期计算机(软件)学院学年论文字数、页数及格式要求.doc...
- 临时文件传输工具推荐
- 一座适合躺尸的低房价、慢节奏小城
- Neat Video Pro插件如何在Flame 2020中使用
热门文章
- Elasticsearch5中安装Elasticsearch-head插件
- linux系统命令:yum和apt-get
- ubuntu zip解压
- mysql 其他引擎
- ChildWindow在Open时旋转出现
- 计算机网络(十四)-CSMA/CD协议
- 计算机网络(八)-数据链路层-帧封装
- Linux下启动程序常见问题,linux系统启动流程及常见故障解决方式
- mybatis insert 重复数据2条_Mybatis框架lt;增gt;:添加一条数据到数据库中,insert...
- centos jupyter 安装_centos7安装 jupyter