我有一个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