2010-09-01 69 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 
);