mysql主键生成策略 自动增长

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主键生成策略 自动增长相关的知识,希望对你有一定的参考价值。

由于有删除数据的情况,创建新的数据时mysql的主键生成机制使得那些曾经用过的主键值被跳过,就是说以前有过2了,但是被删除了,我想创建新数据的时候还是2,而不是从3开始,怎么办?

参考技术A 假如你所说的2是最后一条数据,那么可以这样做:用 Max(id)获取"最大的id";
执行ALTER TABLE tbl AUTO_INCREMENT = 最大的id + 1;
然后继续插入数据,id就会如你所想的是连续的数列;

如果你所指的Id不是最后一条,而是数列中间的一个数,那么你要插入数据时,可以循环对比找出不连续的Id,如上修改AUTO_INCREMENT,然后插入数据,并且将AUTO_INCREMENT修改为最大ID。

对于第一种情况,个人认为可以修改,并且性能影响不大,对已第二种情况,由于每次插入都要首先循环找出合适的位置,如果数据量大的情况下效率比较低,你可以根据自己情况进行选择;

如有你问请留言;本回答被提问者和网友采纳
参考技术B 我也只知如果是被删除的2是最后一个数据的情况,如楼上的仁兄一样做,如果已经有很多数据的时候,往中间插得话,我也不懂咯!!

hibernate中的主键生成策略

1) sequence 序列 oracle数据库使用
2) identity
由数据库维护。通常mysql等拥有自增主键的数据库使用
3native  hibernate决定。
4
uuid  hibernate生成一个32位的uuid字符串作为主键
5) increment
:自动增长主键,由hibernate维护。只支持Integer类型
6
foreign :外键

以上是关于mysql主键生成策略 自动增长的主要内容,如果未能解决你的问题,请参考以下文章

JPA 自动建表- @Id,@GeneratedValue 与 @GenericGenerator 设置主键生成策略

Mybatis-plus 主键生成策略详解

主键生成策略

hibernate中的主键生成策略

hibernate中的主键生成策略

主键生成策略