2010-09-01 61 views
1

我有一个SQL Server DB的表中有两列,我想在添加新字段时自动增加。但是,Managment Studio不允许我将两列设置为IDENTITY。有没有其他方法可以做到这一点?如何在SQL Server自动增量中有两列?

+0

您是否希望这两列在创建时具有相同的值,还是会有不同的种子? – 2010-09-01 22:47:24

+0

我并不是真正开发这个数据库的人......我已经问过为什么我们甚至需要ID字段,而且我认为我们开始意识到我们没有。虽然我仍然很好奇你会怎么做。 – 2010-09-01 22:57:53

+1

我很困惑你为什么需要这个 - 你能开导吗? – Hogan 2010-09-01 23:09:15

回答

4

您可以根据第一个字段使第二个字段成为计算字段。

或者让一个INSERT触发器以编程方式生成第二个值。

+0

是的,我认为触发器可能是最好的选择。它不需要遵循任何特定的公式。 – 2010-09-01 22:56:14

+0

触发器的问题是它们很慢。 – devinbost 2015-10-15 16:25:59

4

如果你想第2列,基本是第一的一面镜子:

ALTER TABLE dbo.myTable ADD 
    foo AS [rowid] 
GO 

如果你想让它的一些数学公式适用于它来达到某种偏差:

ALTER TABLE dbo.myTable ADD 
    foo AS ([rowid]+1) * 7 --or whatever you like. 
GO 
+0

嗨,谢谢你的回答。这些方法有并发问题?提前致谢 – 2016-03-31 16:12:13

0

每个表只能有一个自动增量字段。但是,您可以根据自动增量字段计算字段。或者,你可以有一个int字段,通过前端代码或触发器来管理序列。还可以在SQL Server中使用sequence

CREATE SEQUENCE MySequence START WITH 100; 

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