表标识规范的下一个值- SQL Server
本文关键字:SQL Server 下一个 标识 | 更新日期: 2023-09-27 18:05:03
如何使用SQL Server获得身份规范的下一个值?
不要说Select (id+1) from Table1
,因为它在删除行时会给出错误的结果。
首先,无论你在做什么,你都可能做错了什么,因为并发性。
但是您可以使用
获取标识列的下一个值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文档解释了这个想法的原理。