如何跟踪在SQL Server中自动创建/更新行的时间?

问题描述:

有没有办法自动告诉SQL Server所有的表都应该有插入和更新的时间戳?如何跟踪在SQL Server中自动创建/更新行的时间?

这可能是很多重复性的工作来做到这一点?

或者是否有另一种/更有效的方式来处理事务日志?

卡尔

看一看AutoAudit

这将列添加到表创建DML触发器来管理这些列以及维护审计跟踪表

我发现它非常有用

当然可以使用DDL触发器来尝试强制执行表设计问题。它也可以自动检查元数据的设计气味

+0

看起来像我最生动的梦想! – Malartre 2010-12-03 16:05:19

你将不得不在SQL Server中DML triggers实现这一点,用于插入,你可以用defaults离开,但如果有人经过一个值,将会改写default

你可以有一个RowCreated DATETIME DEFAULT (GETDATE())来自动处理该行最初创建的日期 - 但是对于RowModified DATETIME列而言,没有什么可以编写触发器来执行相同的操作。

对于每个表,你必须写一个AFTER UPDATE触发处理RowModified列是这样的:

CREATE TRIGGER dbo.trg_YourTableUpdated 
ON dbo.YourTable AFTER UPDATE 
AS BEGIN 
    UPDATE dbo.YourTable 
    SET RowModified = GETDATE() 
    FROM INSERTED i 
    WHERE dbo.YourTable.ID = i.ID 
END