我正在努力维护一个票务系统以跟踪工作订单号码,并且每隔一段时间就会跳过WO_NUM跳数。 WO_NUM应与WOID相同。但由于某些原因,在使用该系统多年后,WO_NUM开始比WOID大1。
The count for WO_NUM jumps by 2 instead of 1 from WO_NUM 229912 to WO_NUM 229914
然后几个月后(128天)确切地说,这次再次跳跃到比WOID大2。
The count for WO_NUM jumps from 239946 to 239948
这种情况在18天后再次发生,但这次比WOID大3,WO_NUM从241283跳到241285,而WOID通常从241281增加到241822
7天后再次比WOID大4,WO_NUM从241897跳到241899,而WOID通常从241894增加到241895.
这似乎越来越远,而且他发生的事情几乎快得多了。知道为什么这可能是/我如何修复它?
答案 0 :(得分:3)
如果您在SQL Server中使用IDENTITY
字段或在其他系统中使用类似的自动增量机制,则无法保证您的ID将是连续的。如果您尝试插入新行并且插入失败,则会跳过将使用的ID。这是为了允许另一个插入开始,而另一个插入正在进行而没有ID冲突。
如果你需要(不是想要)ID是有效的,那么你可以做以下事情:
尽管如此,显然这会给您的系统带来很多风险,并且无法解决在删除记录时会发生什么。我会重新考虑您是否需要连续ID以及该功能是否值得额外开发和开销。
答案 1 :(得分:0)
自己想通了。事实证明,如果工作订单已启动,然后在未保存的情况下取消,则WO_NUM正在递增并且不会回滚。感谢所有想要帮助的人,抱歉,我没有提供必要的信息。我下次确保做得更好!