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

时间:2010-12-02 21:31:06

标签: sql-server tsql

有没有办法自动告诉SQL Server所有表都应该有插入和更新的时间戳?

这可能需要做很多重复工作?

或者是否有其他/更有效的方法来处理事务日志?

卡尔

3 个答案:

答案 0 :(得分:5)

您可以使用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

答案 1 :(得分:4)

查看AutoAudit

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

我发现它非常有用

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

答案 2 :(得分:2)

您必须在SQL Server中使用DML triggers实现此目的,对于您可以使用defaults获取的插入内容,但如果有人传入值,则会覆盖default