触发更新日期列与明确设置

时间:2015-08-24 10:37:51

标签: sql

我想知道是否使用触发器设置表(或所有表)的更新日期列是一种更好的做法,而不是让应用程序明确设置它。我意识到这可能会转变为关于偏好和设计模式的争论,所以为了将问题参数化一点 - 我想从最佳实践角度出发。考虑到关注点的分离(保持业务逻辑不受数据库类型的影响)以及确保数据库列具有其中的预期(实际更新“最后修改日期”列),我更倾向于让数据库通过触发器处理它。也就是说,我也倾向于回避触发器,因为它们倾向于隐藏数据库中操作的后果。我希望这里的许多聪明人能有比我更具体的想法。

2 个答案:

答案 0 :(得分:2)

这取决于你想做什么。如果您想知道任何列何时更改,那么触发器将是最合适的。每次添加新列时都必须更改代码会有点麻烦。

但是,如果您只对某些列感兴趣,则可能只希望在更新SQL中处理此问题。

中间当然有阴影 - 你可以选择只处理触发器中的某些列。

另一个考虑因素是有多少代码可以更新给定的表。你可能会有一些人都在唱所有跳舞的更新代码,但这完全有可能可以展开。

提醒一句 - 触发器往往是您在跟踪问题时考虑的最后一个位置。为了这个缘故(这是个人偏好),我倾向于避免它们,除非它们是绝对必要的。

答案 1 :(得分:0)

除了调优之外,触发器的问题是,如果它们被禁用,您将永远不会知道这一点,并且将提交事务。如果更新日期对您的业务逻辑很重要(例如,对于同步流程或财务),这可能会导致严重问题。我更愿意明确处理程序中的所有业务相关数据。并使用触发器主要用于审计。