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

时间:2012-02-09 09:46:28

标签: sql sql-server sequence auto-increment azure-sql-database

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

  1. 更新其他一些字段而不更改行上的整数和
  2. 更新状态和整数
  3. 当整数发生变化时,它应该大于为该列生成的所有其他此类整数(每个表或每个数据库当然也会这样做)。

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

    我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

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

Id bigint PRIMARY KEY IDENTITY (1,1)

答案 1 :(得分:2)

听起来你需要一个SEQUENCE。

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

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