我想知道如何在SQL Server 2008中最好地实现以下简单的行版本控制策略。我们的想法是将primary_key字段复制到另一列(在本例中为originationg_id),以便将多个版本组合在一起/同一对象的修订。
当我插入初始的“version1”行时,我想将originating_id列默认为primary_key的列。这是由数据库自动生成的,所以我不确定如何去做。后续插入已经知道要为该字段提供的值。
示例:
primary_key, originating_id, date_created, some_value
---------------------------------------------------------------------
1 1 13/12/2010 version1 of object A...
2 1 14/12/2010 version2 of object A...
3 1 15/12/2010 version3 of object A...
4 4 15/12/2010 version1 of object B...
感谢。
答案 0 :(得分:1)
对我来说,看起来这是一个存储在实际数据旁边的表格,您可以根据控制审计的方式做一些事情。
如果您出于某种奇怪的原因在同一张桌子内进行此操作,我建议可能会考虑不同的策略,因为很难查询这个长期的“最新”版本。
答案 1 :(得分:1)
正如Mitchel Sellers建议的那样,我会使用后插入触发器;在该触发器中,您将使用'inserted'表作为原始id,并使用some_value列。触发器将类似于:
CREATE TRIGGER triggername
ON tablename
AFTER insert
AS
BEGIN
declare @somevalue varchar(max)
declare @originalid int
select @somevalue = '<some query to set the description>'
select @originalid = inserted.tablenameid
insert into audittable
select @originalid, getdate(), @somevalue
END