我有一個SQL Server DB的表中有兩列,我想在添加新字段時自動增加。但是,Managment Studio不允許我將兩列設置爲IDENTITY。有沒有其他方法可以做到這一點?如何在SQL Server自動增量中有兩列?
回答
您可以根據第一個字段使第二個字段成爲計算字段。
或者讓一個INSERT觸發器以編程方式生成第二個值。
是的,我認爲觸發器可能是最好的選擇。它不需要遵循任何特定的公式。 – 2010-09-01 22:56:14
觸發器的問題是它們很慢。 – devinbost 2015-10-15 16:25:59
如果你想第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
嗨,謝謝你的回答。這些方法有併發問題?提前致謝 – 2016-03-31 16:12:13
每個表只能有一個自動增量字段。但是,您可以根據自動增量字段計算字段。或者,你可以有一個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
);
您是否希望這兩列在創建時具有相同的值,還是會有不同的種子? – 2010-09-01 22:47:24
我並不是真正開發這個數據庫的人......我已經問過爲什麼我們甚至需要ID字段,而且我認爲我們開始意識到我們沒有。雖然我仍然很好奇你會怎麼做。 – 2010-09-01 22:57:53
我很困惑你爲什麼需要這個 - 你能開導嗎? – Hogan 2010-09-01 23:09:15