4

我不断看到问题浮出水面,这些问题引用了数据库表中名为 DateLastUpdated 之类的列。我不明白。

我见过的唯一伴随字段是 LastUpdateUserId 之类的。从来没有迹象表明为什么会发生更新;甚至更新是什么。

最重要的是,该字段有时是从触发器中写入的,其中可用的上下文更少。

当然,它甚至远不及审计线索。所以这不能成为理由。如果在日志或其他任何地方有审计线索,这个字段将是多余的。

我错过了什么?为什么这种模式如此受欢迎?

4

6 回答 6

7

这样的字段可用于检测是否存在由不同进程进行的冲突编辑。当您从数据库中检索记录时,您将获得先前的 DateLastUpdated 字段。对其他字段进行更改后,您将记录提交回数据库层。数据库层检查您提交的 DateLastUpdated 是否与仍在数据库中的相匹配。如果匹配,则执行更新(并将 DateLastUpdated 更新为当前时间)。但是,如果不匹配,则其他进程同时更改了记录,可以中止当前更新。

于 2009-01-07T21:47:44.123 回答
2

这取决于具体情况,但是像这样的时间戳对于自动生成的数据可能非常有用 - 如果稍后依赖关系发生了变化,您可以确定是否需要重新计算某些内容(这是构建系统计算哪些文件需要重新编译的方式)。

此外,许多网站的页面上都会有数据标记“上次更改”,尤其是可能编辑内容的新闻网站。确切的原因不是必需的(并且可能存在备份,以防确实需要审计跟踪),但最终用户需要看到这些数据。

于 2009-01-07T21:50:04.867 回答
0

如果您必须将提要发送给作为增量提要的客户端,这也非常有用,即仅在发送最后一个提要的数据后已更改或插入的记录。

于 2009-01-21T15:54:46.633 回答
0

这些类型的东西通常用于需要用户操作来启动更新的业务应用程序。通常,会有某种业务应用程序(例如 CRM 桌面应用程序),并且对于大多数更新,往往只有一种进行更新的方法。

如果您正在查看地址数据,那是通过“维护地址”屏幕等完成的。

这种数据库审计是为了增强业务级别的审计,而不是取代它。呼叫中心有时会(或者总是在澳大利亚的金融服务提供商的情况下,例如)记录电话。这也是审计跟踪的一部分,但就桌面应用程序(和相关基础架构)而言,它往往不是 IT 解决方案的一部分,尽管这绝不是一个硬性规定。

呼叫中心工作人员通常还具有某种“注释”或“日志”功能,他们可以在其中键入自由格式的文本,说明客户呼叫的原因以及采取了哪些操作,以便下一位接线员可以在客户响铃时从他们离开的地方接听背部。

触发器通常用于准确记录更改的内容(例如,将旧记录写入审计表)。所有这些的目的是利用所有信息(注释、记录的呼叫、数据库审计跟踪和日志)可以重建数据的先前状态以及生成的操作。这可能是为了查找/解决系统中的错误,或者只是作为与客户的冲突解决过程。

于 2009-01-07T21:50:37.690 回答
0

它当然很受欢迎 - 例如,rails 有它的简写,以及创建时间戳 (:timestamps)。

在应用程序级别它非常有用,因为相同的模式在视图中非常常见 - 例如查看这里的问题(56 秒前回答等)。

它也可以在报告中追溯使用以生成统计信息(例如,数据库中记录数的增长曲线是什么)。

于 2009-01-07T21:50:42.900 回答
0

有几种情况

假设您有一个客户的地址表您有您的 CRM 应用程序,客户称他的地址在一个月前已更改,通过 LastUpdate 列您可以看到该客户的这一行在 4 个月内没有被触及

通常您使用触发器来填充历史记录表,以便您可以查看所有其他历史记录,如果您看到创建日期和更新日期相同,则没有必要点击历史记录表,因为您将找不到任何内容

你计算指数(股票市场),你可以很容易地看到它只是通过查看这个列重新计算的

有 2 个数据库服务器,通过比较日期列,您可以了解是否所有更改都已复制等等等等

于 2009-01-07T21:57:23.620 回答