【发布时间】:2013-05-03 12:29:40
【问题描述】:
当我尝试在表中插入新行时,如果该事务发生异常,则数据回滚。
现在当下次成功插入新条目时,AutoIncrement id 将更新为下一个值。表示表中两个连续的唯一 ID 之间存在间隙。
有什么有效的方法可以解决这个问题吗?
提前致谢
【问题讨论】:
-
你必须使用 TRY,CATCH BLOCK
-
这到底是什么“问题”? SQL Server 不这样做。请参阅this answer 快速解释和this one 了解实际问题场景。如果您绝对要求您的 ID 中没有间隙,您将必须为此编写自己的逻辑 - 然后弄清楚当您删除记录时该怎么做。
-
唯一要克服的问题是您期望中的问题。身份列应该被认为是不透明的 blob,只是巧合,可以存储在
int变量中。应尽可能忽略这些列中包含的实际值。
标签: sql-server