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等拥有自增主键的数据库使用
3)native 由hibernate决定。
4) uuid hibernate生成一个32位的uuid字符串作为主键
5) increment:自动增长主键,由hibernate维护。只支持Integer类型
6)foreign :外键
以上是关于mysql主键生成策略 自动增长的主要内容,如果未能解决你的问题,请参考以下文章