一个包含多个TIMESTAMP列的Mysql表
我想有一个两个TIMESTAMP
列的表。 一列logging创buildlogging的时间,另一列logging修改logging的时间。 我想要这些值由数据库处理。 我不希望我的应用程序层需要考虑。
我知道如果你有一个带有DEFAULT CURRENT_TIMESTAMP
或ON UPDATE CURRENT_TIMESTAMP
的TIMESTAMP
列,你不能有另一个TIMESTAMP
列。 你可以使用DATETIME
但是我没有办法在触发器之外默认它。
我发现你可以有多个TIMESTAMP
列 ,每个列没有DEFAULT
或ON 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