ID自动编号的数据库当中删除了一条记录后,如何才能使编号仍然保持连续

ID自动编号的数据库当中删除了一条记录后,如何才能使编号仍然保持连续,第1张

这是很多人的误会:

自动编号只代表数据库只保证自动建立的编号是唯一, 并不保证编号是连续的

至於你第2个问题, 可使用:

1 程序语言实现(PHP, JAVA, C++, VB), 当执行删除 *** 件,

update xxx set id = id - 1 where id > deleteId

2 建立数据库"触发" (Trigger)

但老实说, 保存ID的连续性在实际上并不存在任何意义

ID 这字段是表中的 主键吧

那么 可能和其他表 有关联 如果改动了 就要出大问题了

当然了 要是单表的话你可以整

Delid = 26

delete from tablename where id = Delid

update tablename set id = id-1 where id > Delid

更新自增的主键值 在 mysql 行的通 其他的 数据库 没试过

-----------------------------------------------------

alter table tablename AUTO_INCREMENT = AUTO_INCREMENT - 1;

将表的 自增 ID 值减 1 即可

数据库表ID设置实现能自动增长的步骤如下(以TB_News表为例):

步骤1:首先检查你的新闻表ID列的数据类型,要设置为自增列,需要该列的数据类型为int或者bigint等数值类型

步骤2:打开sqlserver management studio,右键点击你的新闻表,选择“设计”

步骤3:在第1步打开的表结构设置界面,点击你的列“ID”,在底下的列属性设置界面做如下设置:

进行完以上步骤,即可在该数据表中插入数据时,不用给ID列赋值,ID列的值会自动生成,并且该列的值会自动增长。

这个看情况了,首先看看是不是有使用自增列的必要,如果有必要前期要有预见性,对于可能会出现溢出的情况,则尽量使用bigint类型,当然这个要多占用存储空间。如果删除 *** 作比较规则,比如会定期删除较早的数据,那么可以在id即将溢出的时候重置种子,从头开始自增,如果不能循环使用id值得话只能在即将溢出的时候修改表,用更大的数据类型来作为自增列的类型,这个过程因为涉及大量的数据更新插入 *** 作,速度会很慢,通常尽量避免。如果id快溢出了,最好新建一个表来存储新增的数据。

以上就是关于ID自动编号的数据库当中删除了一条记录后,如何才能使编号仍然保持连续全部的内容,包括:ID自动编号的数据库当中删除了一条记录后,如何才能使编号仍然保持连续、mysql删除数据后主键值不连续、数据库表ID怎么设置自动增长等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9422457.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存