一个包含多个TIMESTAMP列的Mysql表

我想有一个两个TIMESTAMP列的表。 一列logging创buildlogging的时间,另一列logging修改logging的时间。 我想要这些值由数据库处理。 我不希望我的应用程序层需要考虑。

我知道如果你有一个带有DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMPTIMESTAMP列,你不能有另一个TIMESTAMP列。 你可以使用DATETIME但是我没有办法在触发器之外默认它。

我发现你可以有多个TIMESTAMP列 ,每个列没有DEFAULTON UPDATE ,当logging被创build时插入NULL ,导致每个列都有当前的时间戳。 从这一点开始,第一列将自动更新。

这非常有效,但是给我留下一个有趣的感觉。 像这可能是一个错误,它可以在任何时候修补。 如果这是它应该工作的方式,那就这样吧。 我会高兴地继续前进。 任何人都可以告诉我,如果这是做这个最好的方法,或者我应该使用触发器?

它在MySQL文档中有logging:

另外,除非使用NULL属性定义允许NULL值,否则可以通过为其指定NULL值来将任何TIMESTAMP列初始化或更新为当前date和时间

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

在5.6.1之前的MySQL版本不会让两个TIMESTAMP列在同一个表中,除非你正确地注意到缺省值和允许为null。

MySQL 5.6。+允许在一个表中有两个或多个TIMESTAMP列。

更多信息: http : //shankargopal.blogspot.in/2013/03/mysql-566-timestamp-columns-and-default.html

MySQL允许同一个表中有多个TIMESTAMP列,请查看这个例子:

CREATE TABLE t1 ( ts1 TIMESTAMP DEFAULT 0, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); CREATE TABLE t2 ( ts1 TIMESTAMP NULL, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); CREATE TABLE t3 ( ts1 TIMESTAMP NULL DEFAULT 0, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

请注意,ts1 TIMESTAMP列是DEFAULT,值为0,而ts2 TIMESTAMP列是DEFAULT,值为CURRENT_TIMESTAMP。 更多信息在这里http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html