欢迎来到IDC91站长网!
解决服务器各种技术问题,加微信uecomzsr

MySQL

当前位置: IDC91 > 数据库 > MySQL

Mysql自增主键id不是以此逐级递增的处理

时间:2022-05-30 13:49:25|栏目:MySQL|点击:

Mysql自增主键id不是以此逐级递增

一、介绍

在mysql数据库添加数据时使用ON DUPLICATE KEY UPDATE进行数据更新时可能会出现id不是逐级以此递增的,而是间断递增。

如id从10下次添加可能就是15或者其他的数字,两个数字之间间隔是ON DUPLICATE KEY UPDATE执行的次数,也就是说ON DUPLICATE KEY UPDATE在执行更新的时候把该表主键进行自增加一。

如图所示

二、问题介绍

在对于同一个表进行新增和修改时我用了两个mapper接口方法,也就是说使用了两次ON DUPLICATE KEY UPDATE操作,这样就会导致该表主键在你更新的时候就进行自增了。等到下次insert时就会出现不是逐级递增了。

三、解决方法

将数据库的insert和update进行拆分。

自增主键的优缺点

自增主键

这种方式是使用数据库提供的自增数值型字段作为自增主键,它的优点是:

(1)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;

(2)数字型,占用空间小,易排序,在程序中传递也方便;

(3)如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。

其实它的缺点也就是来自其优点,缺点如下:

(1)因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。特别是在新系统上线时,新旧系统并行存在,并且是异库异构的数据库的情况下,需要双向同步时,自增主键将是你的噩梦;

(2)在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;

(3)若系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个字符标识(例如“o”,old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • MySQL中的主键以及设置其自增的用法教程
  • mysql修改自增长主键int类型为char类型示例
  • MySQL的自增ID(主键) 用完了的解决方法
  • 浅谈MySQL中的自增主键用完了怎么办
  • MySQL8新特性:自增主键的持久化详解
  • mysql非主键自增长用法实例分析
  • 详解MySQL自增主键的实现
  • 为什么mysql自增主键不是连续的

上一篇:mysql id从1开始自增 快速解决id不连续的问题

栏    目:MySQL

下一篇:ARM64架构下安装mysql5.7.22的全过程

本文标题:Mysql自增主键id不是以此逐级递增的处理

本文地址:https://idc91.com/shujuku/3497.html

广告投放 | 联系我们 | 免责申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

Copyright © 2023 IDC91.COM 版权所有晋ICP备17006296号