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

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

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

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

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

我该怎么做?

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2014-07-20
      • 2012-02-01
      • 2015-01-30
      • 2016-01-11
      • 2011-04-06
      • 2011-01-11
      相关资源
      最近更新 更多