sql server中的标识列在技术上是如何工作的?

sql server中的标识列在技术上是如何工作的?,sql,sql-server,Sql,Sql Server,在我寻找一个方法来创建一个唯一的增量系列的数字。我考虑了身份栏。我不能把它用于我的目的,但它引出了我现在的问题 身份在Sql server中是如何工作的? 我不是在寻找如何使用它的答案,我知道它会在每次插入时增加数字,在删除时留下空白。但我找不到任何文档说明它是如何生成数字的。这是sql server中的表吗?它使用行锁吗?还是其他类型的锁?锁上了吗?它如何防止重复的数字 这些问题/文章中有一些关于内部结构的有用信息: 他们讨论的是SQL 2012中引入的序列,但包括一些关于标识、差异和实现

在我寻找一个方法来创建一个唯一的增量系列的数字。我考虑了身份栏。我不能把它用于我的目的,但它引出了我现在的问题

身份在Sql server中是如何工作的?


我不是在寻找如何使用它的答案,我知道它会在每次插入时增加数字,在删除时留下空白。但我找不到任何文档说明它是如何生成数字的。这是sql server中的表吗?它使用行锁吗?还是其他类型的锁?锁上了吗?它如何防止重复的数字

这些问题/文章中有一些关于内部结构的有用信息:


他们讨论的是SQL 2012中引入的序列,但包括一些关于标识、差异和实现的信息。不确定这是否完全正确,但值得一读。

您想知道它是如何在sql server中具体实现的,还是想要任何线程安全值增量的通用解决方案?为什么需要实现细节?只是为了实现您自己的方式,以特定的顺序生成唯一的值?然后,您不需要知道identity列是如何工作的,一个简单的带有子句的
update
就可以了。或者,对于早期的SQL Server,将锁定读取与更新相结合。SQL Server特定,只是技术兴趣。非常有趣,它没有回答我的问题。