如何为自动增量主键生成下一个值

时间:2014-09-01 15:01:34

标签: mysql sql database

您好我正在使用Java和SQL(XAMPP)开发项目数据库。

为什么“ID”不会增加到下一个可用值。请注意,我删除了2-8中的所有连续数字。并且“ID”具有A_I(自动增量)。

ID     username password fname mname lname course address contact status

1     31231231    123     new   old  smith  BSCS   123      123    USER

9      123       ASD     ASD    ASD ASD    BSCpE  ASD       123    USER

为什么(1,9)不是(1,2)?

2 个答案:

答案 0 :(得分:3)

你回答了你的问题。您删除了2-8之间的数字。

因此它是一个MySQL数据库,自动增量不会根据列的最大值增加数量。

想一想。计算表中的最大数量并将其递增以用于下一条记录的效果会低得多。

而是在某处写下该列上使用的最后一个数字,并在请求新列时增加它更有效。

我不是MySQL大师,但MySQL显然使用内部机制作为递增列值的序列。

如果删除一个非连续数字,那么完全没问题。事实上,我认为在大多数情况下这是可取的。保持原状。只要数字是唯一的,为什么要打扰你?

答案 1 :(得分:1)

由于(a)删除,或(b)在从未提交的事务内生成的ID,数字可能是非连续的。

其他答案指出了重复使用ID的一些问题。最大的问题是当ID与原始数据库的一致性边界之外的另一个系统共享后重复使用时会发生什么,即复制到另一个SQL Server数据库,或者通过集成中间件到公平的系统。

底线:不要重复使用ID。