主键自动增量操作

时间:2015-06-17 20:23:24

标签: sql sql-server

有没有办法让主键具有增加它但填补空白的功能?假设我有下表:

____________________
| ID  |    Value    |
|  1  |      A      |
|  2  |      B      |
|  3  |      C      |
^^^^^^^^^^^^^^^^^^^^^

请注意,该值只是一个示例,订单与问题无关。

删除ID为2的行后(表格如下所示):

____________________
| ID  |    Value    |
|  1  |      A      |
|  3  |      C      |
^^^^^^^^^^^^^^^^^^^^^

我添加另一行,使用常规自动增量功能,它将如下所示:

____________________
| ID  |    Value    |
|  1  |      A      |
|  3  |      C      |
|  4  |      D      |
^^^^^^^^^^^^^^^^^^^^^

正如所料。

我想要的输出是:

____________________
| ID  |    Value    |
|  1  |      A      |
|  2  |      D      |
|  3  |      C      |
^^^^^^^^^^^^^^^^^^^^^

用新行填充间隙。还要注意,在内存中,它看起来可能会有所不同。但关键是主键会填补空白。

当拥有主键(例如)1, 2, 3, 6, 7, 10, 11时,应首先填写4,然后58等等......当表格时是空的(即使之前有一百万行),它应该从1开始。

我如何做到这一点?有没有类似的内置功能?我可以实施吗?

编辑:如果不可能,为什么不呢?

1 个答案:

答案 0 :(得分:3)

不,你不想这样做,正如juergen-d所说。它不太可能做你认为它正在做的事情,并且它会在多用户环境中做得更少。 在多用户环境中,即使没有删除,也可能只是从中止的插入中获得空洞。