我在C#中有一个Form Windows程序,它将一条记录添加到数据库中并可以删除它。
在数据库中我有ID(这是自动编号),但如果我删除了一条记录,如果我想要添加另一条记录,则自动编号会增加并且不会添加缺少的数字。
我的意思是,如果我的Access数据库中有9条记录,并且我想删除一条记录,它将是8,但是当我添加一条新记录时,我得到的是10而不是9.像这张图片:
有没有解决方案?
答案 0 :(得分:1)
如果它是一个自动编号,数据库将生成一个大于最后一个数字的数字 - 这就是关系数据库的工作方式。为什么会有这个解决方案?想象一下,删除5,你想要做什么,让自动编号创建下一条记录为5?如果你在C#app中显示一个id - 坏主意 - 然后将其更改为你可以控制的其他值。
然而,你想要实现的目标没有意义。
答案 1 :(得分:1)
如果我删除了一条记录,如果我想添加另一条记录,则自动编号会增加并且不会添加缺少的数字。
[...]
有没有解决方案?
简短的回答是“不”。使用后,即使已删除的记录在表中具有最大的自动编号值,通常也不会重复使用自动编号值。这是因为(至少在某种程度上)Jet / Ace数据库引擎必须能够在多用户环境中管理自动编号值。
(上述规则的一个例外是,如果压缩Access数据库,则具有顺序自动编号字段的表的下一个可用自动编号值将重置为Max(current_value)+1。)
有关自动编号字段如何工作的详细信息,请参阅我的其他答案here。
答案 2 :(得分:1)
在MS访问中,没有任何解决方案。但是在sql server的情况下,您可以使用Identity列创建自己的函数。