跟踪更新者、更新时间的最佳方法是什么

Rus*_*een 6 sql-server

在 MS SQL Server 中,更新表上一组字段的更新者、更新时间的最佳方法是什么?我已经在代码中看到它触发了它。等等。我看到触发的好处是这一切都发生在同一个地方。不利的一面是,有时管理员必须批量修复表并且不想删除上次用户更新的用户名/时间。

注意:我不想要时间戳。我想要 Windows 用户 ID 和上次更改的人类可读日期/时间。

寻找您推荐的产品以及为什么它是一个不错的选择。

gbn*_*gbn 9

1)你的触发点子很好:我们有时会使用它。

它主要是万无一失的,除了:

  • 你提到的问题
  • 如果人们通过 Web 服务器或中间层连接,您并不总是拥有 SUSER_SNAME

您可以使用 SET CONTEXT_INFO 来缓解这种情况以控制管理员行为,或者更仔细地传递一些最终用户详细信息。

2) 所有通过存储过程写入。我们主要使用这种方法。

我们还在 UpdatedOn 上使用默认值,所以...

UPDATE
   ...
   UpdatedBy = whoever, UpdatedOn = DEFAULT
Run Code Online (Sandbox Code Playgroud)

3)让你的客户去做。我不会再继续了...

最后,我们实现了“AffectedBy”和“AffectedOn”字段来跟踪管理/间接更新。