将自动版本信息添加到MSSQL表的最简单方法是什么?

时间:2009-03-17 10:42:45

标签: sql-server versioning

信息应该是2个日期时间列(插入/更新),精度为ms,并且只要有人插入或更新行,就应该由服务器自动更新。

2 个答案:

答案 0 :(得分:1)

在表格中添加列

ALTER TABLE yourTable ADD
    Inserted datetime NULL,
    Updated datetime NULL
GO

创建更新并插入触发器以更新列

CREATE TRIGGER yourTableInsertTrigger 
   ON  yourTable
   AFTER INSERT
AS 
BEGIN
    Update yourTable Set Inserted = getdate()
    from Inserted 
    Where yourTable.Key = Inserted.Key
END
GO


CREATE TRIGGER yourTableUpdateTrigger 
   ON  yourTable
   AFTER UPDATE AS 
BEGIN
    Update yourTable Set Updated = getdate()
    from Updated
    Where yourTable.Key = Updated.Key
END
GO

现在,如果您想要非常干净,那么您必须确保使用视图而不是直接表访问来更改/更新这两列,以便您对数据进行其他访问。此外,如果您的主键不一致,并且您有许多表,我建议您使用CodeGeneration来创建sql。 MyGeneration会很好。

答案 1 :(得分:0)

我认为插入的触发器已经过时了。只需将getdate()添加到插入的列中作为默认值而不是null。