2012-02-09 59 views
2

我有以下问题。一个SQL表存储作业项目,每个项目有state。项目可以一起或单独更改状态以及其他属性。我希望能够为每个作业项目分配一个唯一增加的整数(64位或更多位),这些整数只会在我要求时分配,而不会像每个更新一样更新,如timestamp的行为。所以,我希望能够做到两个操作:如何在SQL Server中生成唯一的递增整数值?

  1. 更新一些其他的领域,而不改变该行整数型和
  2. 更新状态和整数

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

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

我该怎么做?

回答

2

听起来像是你需要的序列。

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

序列是即将到来的SQL Server 2012中的原生支持,但在那之前,你可以模拟一个按本dba.se问题:https://dba.stackexchange.com/q/3307/630

3

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

但简而言之,你需要声明一个字段作为您的表如下:

Id bigint PRIMARY KEY IDENTITY (1,1) 
+2

+1:但是,并不需要* *是'PRIMARY KEY ',如果需要/适当的话可以使用它。无可否认,这通常是一个IDENTITY列的情况:) – MatBailie 2012-02-09 10:08:14

+0

确实,只是很快抓住了代码:P – twilson 2012-02-09 10:37:08