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