mySQL`date_updated`列仅用于特定字段:SELECT和INSERT vs TRIGGER?

时间:2016-08-12 11:01:21

标签: php mysql timestamp

我有一堆存储在MySQL数据库中的资源。

每个字段都设置为date_modified

但是,现在这些表格中的列我们不想触发ON UPDATE CURRENT_TIMESTAMP

从我所看到的有2种选择。 (不包括重构表格)

1)在更新之前,从数据库中加载当前实体,检查字段是否已更改,并根据该值设置date_modified

2)为每个表格创建一个date_modified,根据TRIGGER字段检查NEW字段并设置时间戳。

我在两种方法之间徘徊。

1会有更大的开销,因为它必须执行2次查询。

2有助于维护数据完整性,但可能会在以后掩盖某些应用程序逻辑时导致问题。如果以后添加了新字段,则开发人员必须记住也更新触发器以确保它更新修改后的列。

有第三种方法吗?在UPDATE中以某种方式检查值是否已更改,然后更新date_modified?

或其他任何方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

还有第三种选择。提及date_modified查询中的UPDATE列。

例如,

  UPDATE some_table
     SET some_column = 'new value',
         date_modified = date_modified
   WHERE id = some_id_value

这将更改表中的行,同时保留date_modified值。