如何在 SQL Server 中生成唯一递增的整数值?

Posted

技术标签:

【中文标题】如何在 SQL Server 中生成唯一递增的整数值?【英文标题】:How do I generate a unique increasing integer value in SQL Server? 【发布时间】:2012-03-01 18:49:03 【问题描述】:

我有以下问题。 SQL 表存储作业项,每个项都有state。项目可以一起或单独更改状态和其他属性。我希望能够为每个作业项分配一个唯一的递增整数(64 位或更多位),该整数仅在我要求时分配,而不是像timestamp 行为那样在每次更新时更新。所以我希望能够做两个操作:

    更新一些其他字段而不更改行上的整数和 更新状态和那个整数

当整数发生变化时,它应该大于为该列生成的所有其他此类整数(每个表或每个数据库当然也会这样做)。

这需要可扩展,以便多个客户端可以使用数据库而不会受到严重处罚。

我该怎么做?

【问题讨论】:

【参考方案1】:

看这里http://blogs.msdn.com/b/sqlazure/archive/2010/07/15/10038656.aspx。应该有帮助

但简而言之,您需要在表中声明如下字段:

Id bigint PRIMARY KEY IDENTITY (1,1)

【讨论】:

+1 :但是,不需要PRIMARY KEY,如果需要/适当可以使用它。诚然,IDENTITY 列通常是这种情况:)【参考方案2】:

听起来你需要一个序列。

这与您的表分离(与 IDENTITY 不同),可以是表范围或数据库范围:由您决定。

即将推出的 SQL Server 2012 原生支持序列,但在此之前,您可以根据以下 dba.se 问题模拟一个:https://dba.stackexchange.com/q/3307/630

【讨论】:

以上是关于如何在 SQL Server 中生成唯一递增的整数值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby 中生成唯一的六位字母数字代码

如何在 sql server 中生成随机 nvarchars

如何在 SQL Server 中生成日期范围

如何在 sql server 2008 中生成随机布尔值?

如何使用存储过程在 SQL Server 中生成表的数据脚本文件?

如何在 Excel 中生成的 SQL 插入语句中获取行数?