我有一堆存储在MySQL数据库中的资源。
每个字段都设置为date_modified
。
但是,现在这些表格中的列我们不想触发ON UPDATE CURRENT_TIMESTAMP
。
从我所看到的有2种选择。 (不包括重构表格)
1)在更新之前,从数据库中加载当前实体,检查字段是否已更改,并根据该值设置date_modified
。
2)为每个表格创建一个date_modified
,根据TRIGGER
字段检查NEW
字段并设置时间戳。
我在两种方法之间徘徊。
1会有更大的开销,因为它必须执行2次查询。
2有助于维护数据完整性,但可能会在以后掩盖某些应用程序逻辑时导致问题。如果以后添加了新字段,则开发人员必须记住也更新触发器以确保它更新修改后的列。
有第三种方法吗?在UPDATE中以某种方式检查值是否已更改,然后更新date_modified?
或其他任何方法来解决这个问题?
答案 0 :(得分:1)
还有第三种选择。提及date_modified
查询中的UPDATE
列。
例如,
UPDATE some_table
SET some_column = 'new value',
date_modified = date_modified
WHERE id = some_id_value
这将更改表中的行,同时保留date_modified值。