我有以下问题。 SQL表存储作业项,每个项都有state
。项目可以一起或单独更改状态和其他属性。我希望能够为每个作业项分配一个唯一的增量整数(64位或更多位),只有在我要求时才会分配,而不是像timestamp
这样的每次更新都会更新。所以我希望能够做两个操作:
当整数发生变化时,它应该大于为该列生成的所有其他此类整数(每个表或每个数据库当然也会这样做)。
这需要具有可扩展性,以便多个客户端可以使用数据库而不会受到严重的惩罚。
我该怎么做?
答案 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