2012-04-19 54 views
3

在我的搜索一個方法來創建一個唯一的增量系列的數字。我考慮了身份專欄。我無法將其用於我的目的,但這導致我目前的問題;sql server中的標識列在技術上如何工作?

身份在技術上如何在Sql服務器上工作?

我不是在尋找如何使用它的答案,我知道它增加了每個插入上的數字,在刪除時留下空白。但我找不到任何文件如何產生它的數字。這是在sql服務器中的表嗎?它使用行鎖嗎?或者其他類型的鎖?它是否鎖定?它如何防止重複的數字?

+0

你想知道它是如何專門在SQL Server中實現的,或者你想要任何通用解決方案的線程安全值增量? – zerkms 2012-04-19 11:28:36

+0

爲什麼你需要實現細節?只有實現你自己的以某種順序生成唯一值的方式?那麼你不需要知道標識列是如何工作的,使用['output'](http://msdn.microsoft.com/en-us/library/ms177564.aspx)子句進行簡單的'update'會執行。或者,對於較早的SQL Server,則是鎖定讀取與更新的組合。 – GSerg 2012-04-19 11:30:13

+0

特定的SQL Server,只是技術上的興趣。 – Jaco 2012-04-19 12:36:28

回答

3

有沒有在這些問題/文章的內部一些有用的信息:

https://dba.stackexchange.com/questions/1635/why-are-denali-sequences-supposed-to-perform-better-than-identity-columns

http://www.sqlmag.com/article/sql-server/Sequences-Part-2-129205

他們正在談論這是在SQL 2012引入的序列,但包括身份的一些信息,差異和實現。不知道這是否完全答案,但恕我直言,值得一讀。

+0

真的很有趣,它不回答我的問題。 – Jaco 2012-04-19 12:45:39