2009-11-27 52 views
5

什么是最好的办法,以增加在MySQL中创建和修改字段:使用MySQLMySQL的:加入创建和修改的字段

1)功能,如使用PHP(或别的东西)on update CURRENT_TIMESTAMP

2)?为什么?

如果答案是MySQL,你会怎么做?

回答

3

这是一个很好的问题。我想你需要看看这个从两个方面

  • 性能
  • 实现架构

从性能的角度来看,如果您已经创建了一个行或更新行时然后更新时间戳该行是微不足道的,因此我不认为从PHP更新或通过触发器有很大的区别。

从实现架构的角度来看,触发器相当容易,如果你有一个很好的ORM体系结构(或者使用像Doctrine这样的东西),你可以在抽象层覆盖save()逻辑以始终更新创建/修改的时间戳当你保存。

因此,我个人会在PHP中实现这一点,如果我几乎所有的数据库都通过ORM访问,而不是通过触发器或存储过程。

0

我的首选是改变或添加一个列到MySQL表中,像LastChanged类型为TIMESTAMP,默认值为CURRENT_TIMESTAMP。所以当一行被添加到表中时,日期会自动生成。

然后,你可以拥有在AFTER UPDATE等的触发,一旦记录已修改

IF NEW.LastChanged = '0000-00-00 00:00:00' THEN 
     SET NEW.LastChanged = NOW(); 
    END IF 
,将更新上次更改日期