• 售前

  • 售后

热门帖子
入门百科

Mysql自增主键id不是以此逐级递增的处置惩罚

[复制链接]
米老鼠和蓝精鼠v 显示全部楼层 发表于 2021-8-14 14:22:45 |阅读模式 打印 上一主题 下一主题
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)来表示这是老数据,那么自动增长的数字型又面对一个挑战。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作