winforms数据库id主键持续计数

kqlmhetl  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(287)

所以我正在做一个程序,我可以使,保存和删除数据库中的项目,但我希望现有项目的id的跟进。例如,我有以下项目:

|  Id |  Item name  |
----------------------
|  1  |  item 1
|  2  |  item 2
|  3  |  item 3

当我删除第2项时,我希望它是:

|  Id |  Item name  |
----------------------
|  1  |  item 1
|  2  |  item 3

而不是:

| Id  |  Item name  |
----------------------
|  1  |  item 1
|  3  |  item 3

这是我的表格:

mwg9r5ms

mwg9r5ms1#

但我希望现有物品的id能互相追踪。
所以不要使用身份。很简单。身份不遵循你想要的规则,但是微软已经编程的规则,它说“一旦被给予,就不会被重用”。句号。
rtfm会告诉你在那里没有再利用的保证。你必须坐下来制定一个程序来获得类似的身份——如果你暴露了身份,你可能会得到商业上的所有副作用。以及性能影响。
注解:我使用id作为他们在列表中所处位置的参考。
那是一种虐待。如果你想要一个订单,我会有另一个字段,所以你可以重新排序。无论如何,你都需要一个订单(除非你想遵循另一个最坏的做法,暗示pk订单是保持的-这将起到绝对好的作用,直到有一天你的订单发生变化,然后来到这里,你会被认为没有保证的订单,除非你要求一个)。

yzckvree

yzckvree2#

主键中的数值通常不是这样使用的。如果需要记录的数字顺序,可以在检索数据时使用此查询

SELECT 
  ROW_NUMBER() OVER(ORDER BY Id ASC) AS OrderNum,ItemName
  FROM yourTable

然后让主键自己自动递增,并在唯一性中完成它的工作。

相关问题