【发布时间】:2012-11-07 16:48:04
【问题描述】:
我创建了一个名为 ABC 的表。它有以下三列:-
number_pk(int) 列是我的表的主键,我在该表中为该列启用了auto increment 功能。
现在我从该表中删除了两行,例如 Number_pk= 5 和 Number_pk =6。
我现在得到的表是这样的:-
现在,如果我再次在此表中输入两个具有相同值的新行,我将得到两个新的 Number_pk starting from 7 and 8,即
我的问题是,这背后的逻辑是什么,因为我已经从表中删除了两行。我知道一个简单的答案是因为我已经为我的表的主键设置了自动增量。但我想知道有什么方法可以从最后一个 Number_pk 开始插入两个新条目而不改变我的表格设计?
以及自从我从数据库中删除行后,SQL Server 是如何管理这条记录的??
【问题讨论】:
-
你为什么想要那个?有时需求并不是真正的需求
-
我只是在检查它。并试图找到一个解决方案,因为可能存在主键的 int 已满的情况,然后我知道我们可以使用 BigInt。所以只是想,为什么我们不能利用未使用的呢?我不确定这是否可行,但只是我的查询:)
-
是的,连续的 pk 很好,但肯定没有必要。
-
是的,我知道我只是想知道 SQL Server 是如何实际管理它的(如果可能的话)!!
-
如果您绝对想要一个解决方案,您可以将已删除的 id 存储在单独的表中,当您在代码中分配 id 编号时,您可以先从已删除的 ids 表中分配,然后再使用自动增量(如果已删除的 ids 表)是空的。
标签: sql sql-server sql-server-2008 sql-server-2005