如何在SQL Server数据库中将两列设置为增量种子100的自动增量int?

时间:2011-01-06 07:42:59

标签: sql-server

如何在SQL Server数据库中将两列设置为带增量种子100的自动增量int?

2 个答案:

答案 0 :(得分:13)

每个表只能有一个标识列,但是,有一些想法和解决方法here

使用派生计算列进行模拟

如果两个“标识”列彼此同步,或者第二个标识可以使用公式从第一个标识派生,则计算列可能适用,例如,如果第二个identity被实际标识列中的常量偏移:

ALTER TABLE MyTable ADD OtherIdentity AS RealIdentity + 100;

其中RealIdentity是实际/原始IDENTITY列。

Computed Column derived off Identity SqlFiddle example here

使用独立序列

另一种选择是使用independent Sequence (Sql2012 and Later)

CREATE SEQUENCE MySequence START WITH 100;

CREATE TABLE MyTable
(
    RealIdentity INT IDENTITY(1,1),
    RandomCol NVARCHAR(100),
    FakeIdentity INT DEFAULT NEXT VALUE FOR MySequence
);

Sequence SqlFiddle example here

答案 1 :(得分:2)

与nonnb说的一样,您只能将一列标记为标识。但是,如果两个标识列之间存在数学关系,则可以使用计算列。例如,如果第二个id等于第一个id加500,您可以使用:

create table t1 (id1 int identity(1,100), id2 as id1 + 500)