我已经创建了一个项目历史记录表,我希望自动增加VersionId
ItemId
分区。
ID ItemId VersionId ItemContent Created 1 1 1 fooo 2015-02-24 12:54:00.11 2 2 1 barr 2015-02-24 12:54:15.35 3 1 2 foo 2015-02-24 12:55:00.61 4 1 3 baz 2015-02-24 12:55:45.23 5 2 2 bar 2015-02-24 12:56:00.03
目前,VersionId
设置在触发器中。我想要找到的是这样的(我知道这实际上不起作用):
create table ItemHistory
(
Id int identity(1,1) not null primary key
,ItemId int not null references Item(Id)
,VersionId int not null default row_number() over (partition by ItemId order by Id)
,ItemContent varchar(max)
,Created datetime not null default getdate()
)
虽然我有一个可行的解决方案,但我想知道我是否缺少一些用于处理此案例的内置功能。</ p>
答案 0 :(得分:2)
如果您想将我的评论用作答案
为什么不用视图来做呢?您可以在视图中使用row_number()。
对于ItemId的索引,Id应该非常快 可能比触发器更少的开销。
我看到你添加了评论只读。观点更有理由。