"每个表只能有一个IDENTITY列" - 为什么?

Cha*_*nya 6 sql-server database-design identity-column

"每个表只能有一个IDENTITY列"

为什么会这样?以车辆的情景为例,存在唯一的登记号码以及唯一的登记号码.要在sql server中描述这种情况,我们需要在列上进行自定义实现.相反,在Oracle中,您可以在表上拥有任意数量的序列.为什么IDENTITY列有限制,有什么具体原因吗?

拥有车辆架构的场景是一个虚构的问题,我在质疑为什么对标识列有限制.

Mar*_*ith 9

SQL Server中的标识列具有种子和自动增量.如果我们知道第一个id列的值,我们总是可以计算出第二个假设id值应该是多少.

例如,如果这是合法的语法

create table #foo
(
bar int identity(1,10),
baz int identity(1000,1)
)
Run Code Online (Sandbox Code Playgroud)

我们不需要存储baz,因为它可以从bar计算如下.

baz = 1000 + (bar-1)/10
Run Code Online (Sandbox Code Playgroud)


DFo*_*k42 6

因为它的价值是相同的.如果您将身份(1,1)作为主要身份,并且身份(100,2),您将获得以下结果:

1     100
2     102
3     104
4     106
5     108
6     110
7     112
8     114
9     116
10    118
Run Code Online (Sandbox Code Playgroud)

你可以通过这样做获得第二列:

((ID-1)*2)100

这是一个线性方程,那么除了节目之外还有什么意义呢?