向Microsoft SQL Server数据库请求表上的下一个自动生成的标识符

Rey*_*lds 2 sql sql-server

我在SQL Server数据库中有一个表,它有一个自动生成的整数主键.如果不在表中插入记录,我需要查询数据库并获取下一个自动生成的ID号.

我认为它是SQL Server 2005版,如果这有所不同.

有没有办法做到这一点?

gbn*_*gbn 7

是的,但它不可靠,因为另一个会话可能会使用预期的数字.

如果您仍想这样做,请使用IDENT_CURRENT

编辑,正如评论所指出的那样(改进我的答案):

  • 你需要添加一个 IDENT_INCR('MyTable')来获得潜在的下一个数字
  • 另一个进程可能会回滚,这个数字可能不是最后使用的那个


mar*_*c_s 5

不,那里没有.只有在实际的INSERT发生才会定义和分发ID .

您可以使用查看最后给定的ID

DBCC CHECKIDENT('YourTableName')
Run Code Online (Sandbox Code Playgroud)

但这只是最后一个使用 - 不能保证下一个真的会是这个值+ 1 - 它可能是 - 但不能保证

  • 您可以使用ident_incr来获取增量而不是猜测+1,但是我们都同意,而不是生产代码机制. (2认同)