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

作者:CoderYin 时间:2024-01-19 03:07:55 

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

一、介绍

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

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

如图所示

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

二、问题介绍

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

三、解决方法

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

自增主键的优缺点

自增主键

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

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

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

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

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

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

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

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

来源:https://blog.csdn.net/CoderYin/article/details/91050002

标签:Mysql,自增主键,id,递增
0
投稿

猜你喜欢

  • python多进程 主进程和子进程间共享和不共享全局变量实例

    2022-11-05 11:42:56
  • 必备的JS调试技巧汇总

    2023-08-07 06:26:50
  • python之信息加密题目详解

    2023-06-26 09:24:35
  • Vue.js实现多条件筛选、搜索、排序及分页的表格功能

    2024-05-02 16:41:58
  • python如何编写win程序

    2022-12-09 11:48:38
  • 浅谈Pytorch torch.optim优化器个性化的使用

    2023-12-19 08:47:12
  • 关于INDEX SERVER+ASP建立查询引擎的一点心得

    2008-03-02 15:56:00
  • python矩阵的基本运算及各种操作

    2023-01-12 11:37:27
  • 远古幻想ICON 1套+创作思路

    2007-09-30 20:33:00
  • 解决pycharm运行程序出现卡住scanning files to index索引的问题

    2023-02-14 05:43:52
  • 分析运行中的 Python 进程详细解析

    2021-09-19 14:47:30
  • python 地图经纬度转换、纠偏的实例代码

    2021-11-06 11:12:18
  • 纯CSS圆角框

    2009-12-11 18:57:00
  • 浅谈python中字典append 到list 后值的改变问题

    2021-09-17 23:13:23
  • vue实现导航栏效果(选中状态刷新不消失)

    2024-05-09 15:18:31
  • 使用vue.js写一个tab选项卡效果

    2024-04-22 22:23:34
  • UE、UI、UCD、Interaction Design、UED、UX、HCI、Usability,IA

    2022-09-11 04:22:56
  • python基础while循环及if判断的实例讲解

    2021-02-18 06:56:06
  • Mysql巧用join优化sql的方法详解

    2024-01-16 01:19:34
  • SQL Server数据在不同数据库中的应用

    2008-12-24 15:34:00
  • asp之家 网络编程 m.aspxhome.com