triggers - 最后更新日期 : Antipattern?

标签 triggers anti-patterns last-modified

我一直看到一些问题引用了数据库表中名为 DateLastUpdated 的列。我不明白。

我见过的唯一伴随字段是 LastUpdateUserId 等。从来没有关于更新发生原因的指示;甚至更新是什么。

最重要的是,此字段有时是从触发器内写入的,在那里可用的上下文更少。

它甚至远不及审计追踪。所以这不能成为理由。如果有 和日志中某处的审计跟踪或其他内容,该字段将是多余的。

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

最佳答案

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

关于triggers - 最后更新日期 : Antipattern?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422222/

相关文章:

Android SQlite 触发器

php - 我的 MySQL 数据库中的正则表达式不工作

java - 我如何重写此代码片段,以便我不手动/显式调用注入(inject)器?

c# - 什么时候可以更改属性 getter 访问的对象状态(例如初始化)?

powershell - Powershell:将“上次修改时间”与“特定日期”进行比较,并用正确的日期替换

mysql - 从具有父子关系的留言板中查询最后的 n,15 个主题

postgresql - 将变量分配给 PostgreSQL 触发器中的输出参数

PostgreSQL错误代码,设置自定义错误代码

dependency-injection - 使用 Ninject 并绑定(bind)默认实现,同时避免可怕的 Service Locator 反模式

java - 如何检索文件的修改日期?