2009-10-22 58 views
3

为新项目设计数据库表时,是否最好为每个表添加一个last_modified列,该列会自动更新?矫枉过正将last_modified列添加到所有表?

性能问题是否会自动更新last_modified列太多而不值得?

本专栏可能有许多用途,其中之一是帮助缓存。但是把这样的专栏投入每张桌子是否过于矫枉过正?

另外 - 是否有其他有用的理由有一个last_modified列?

这是特定于MySQL,因为它是我使用的唯一系统。

+0

您当然需要一个触发器来维护这样一个列。 – HLGEM 2009-10-22 18:31:10

+0

我不确定是否需要触发器,在MySQL中,可以通过在相关列类型(我使用类型TIMESTAMP)上设置属性ON UPDATE CURRENT_TIMESTAMP来完成。 – Vamos 2009-10-22 18:40:37

回答

2

这要看!

你需要知道每个表的last_modified日期吗?如果是这样,那么你需要那个专栏。

迎合域,然后担心性能,除非你知道你将有该表的插入/更新的疯狂数量...

0

嗯,我会说你应该有用于某些用户操作频繁更改记录的表的列。最重要的是,如果您具有身份验证功能,则存储进行更改的人员会很有用。当有人向你询问是谁对记录进行了某些更改,因为某些内容被破坏时,它也可能为您节省一些痛苦。

2

我发现这是一个特别令人不安的信息。我只能在记录被修改时得到,而不是修改的内容,或者由谁,为什么,如何修改。

我更喜欢为我的重要表格提供审计表。

1

为什么你想要它?

这将是一个插入或更新的小性能命中。如果您需要发送自特定日期以来更改的记录的信息(我们通常称之为增量馈送),则此功能非常有用。这对于数据更改的管理并不是非常有用。像Raj More一样,我更喜欢使用审计表方法来存储变更的数据,旧的和新的价值以及进行变更的人员。这可以用于回滚特定的更改或一组更改,如果仅依赖备份来回滚不良数据,则很难做到这一点。

在数据是静态的或从批处理(如导入)而不是用户界面更新的情况下,通常是没有用的。为什么在查找表上有这样的事情呢?

相关问题