表标识规范的下一个值- SQL Server

本文关键字:SQL Server 下一个 标识 | 更新日期: 2023-09-27 18:05:03

如何使用SQL Server获得身份规范的下一个值?

不要说Select (id+1) from Table1,因为它在删除行时会给出错误的结果。

表标识规范的下一个值- SQL Server

首先,无论你在做什么,你都可能做错了什么,因为并发性。

但是您可以使用

获取标识列的下一个值
select ident_current('TableName') + ident_incr('TableName')

你不可能知道,也不应该去猜测。重新思考你的问题很重要。例如,停止使用identity并生成您自己的id,或者切换到像uniqueidentifier这样的东西,您可以控制并且不会在线程之间发生冲突。

下一条记录的标识值不确定。考虑以下代码:

begin tran
insert into table values ('my new value')
rollback tran

尽管这段代码没有插入记录,但它将更新生成的下一个ID,并造成空白。因此,如果表的max ID=4,那么你运行这段代码,然后你做一个插入,然后提交,记录的ID将是6,而不是5。

因为SQL Server控制这个值,你的预测将是正确的,直到你的系统达到更多的负载,或者人们做一些高级的事情,如使用事务。

这是一个典型的问题来源,所以避免这样做。

如果您想控制id,另一种选择是使用类似HILO生成器的东西——这个RavenDB文档解释了这个想法的原理。