2

我注意到 SQL 会跟踪最新的身份(每次创建新记录时它都会自动增加字段)。我想使用 C# 从表中检索最新的身份。不幸的是,大多数时候表是空的(记录会在一段时间后被写入和删除,所以表经常是空的)。这是否可以在 C# SQL API 的范围内执行此操作,还是我必须创建一个存储过程来检索它?

在此处输入图像描述

为了更好地解释。如果上面的行被删除,下一条记录的下一个 ID 号将是 32。我想在写入记录之前检索 32,在表为空的情况下。

4

3 回答 3

4
SELECT IDENT_CURRENT('table_name')+1;

IDENT_CURRENT 返回为任何会话和任何范围内的特定表生成的最后一个标识值。

http://msdn.microsoft.com/en-us/library/ms175098.aspx


然而,虽然这显示了下一个 ID 将是什么,但这并不总是意味着它将是您输入的下一个 ID。别人可以INSERT在你之前创造新的记录。

简而言之,没有办法返回您接下来将插入的值。

于 2012-04-19T14:40:44.060 回答
0

那将是以下查询

DBCC CHECKIDENT ('[TableName]', NORESEED )

于 2012-04-19T14:41:12.547 回答
0

以防增量不是常规的“1”:

SELECT IDENT_CURRENT('mytable') + IDENT_INCR('mytable')

当然,所有这些都依赖于已一致填充的标识列,即不会干扰手动插入或重新播种。并且 Curt 提到了如果您要直接使用此 ID 进行插入,可能会出现并发问题。

于 2012-04-19T14:49:38.440 回答