如何在MySQL中添加创建时间和修改时间字段的最佳方法是什么:
1)使用MySQL功能,例如on update CURRENT_TIMESTAMP
2)使用PHP(或其他方式)?为什么?
如果答案是MySQL,您会如何实现呢?
这是一个好问题。我认为你需要从两个方面来考虑:
从性能的角度来看,如果您已经创建了一行或更新了一行,则更新该行上的时间戳是可以忽略不计的,因此我认为通过php或通过触发器进行更新之间没有太大区别。
从实现架构的角度来看,触发器相当容易使用,并且如果您拥有良好的ORM架构(或使用类似Doctrine的东西),则可以在抽象层中覆盖save()逻辑以始终在保存时更新创建/修改时间戳。
因此,如果我的所有数据库访问都通过ORM而不是通过触发器或存储过程进行,则我个人会在PHP中实现这一点。
我的偏好是更改或添加一个列到你的MySQL表中,例如LastChanged,类型为TIMESTAMP,默认值为CURRENT_TIMESTAMP。这样,当一行被添加到表中时,日期会自动生成。
然后你可以在AFTER UPDATE中添加触发器,一旦记录被修改就更新最后更改日期。
IF NEW.LastChanged = '0000-00-00 00:00:00' THEN
SET NEW.LastChanged = NOW();
END IF