[英]One Mysql Table with Multiple TIMESTAMP Columns
我想要一个包含两个TIMESTAMP
列的表。 一列用于跟踪创建记录的时间,另一列用于跟踪修改记录的时间。 我希望数据库处理这些值。 我不希望我的应用层需要考虑它。
我知道如果你有一个带有DEFAULT CURRENT_TIMESTAMP
或ON UPDATE CURRENT_TIMESTAMP
的TIMESTAMP
列,你就不能拥有另一个TIMESTAMP
列。 您可以使用DATETIME
但我知道,在触发器之外无法默认它。
我发现你可以有多个TIMESTAMP
列 ,每个列都没有DEFAULT
或ON UPDATE
并在创建记录时插入NULL
,导致每个列都有当前的时间戳。 从那时起,第一列将自动更新。
这很有效,但它给我带来了一种有趣的感觉。 像这样可能是一个错误,它可以随时修补。 如果这是它应该工作的方式那么就是这样。 我会快乐地继续前行。 任何人都可以告诉我这是否是最好的方法,或者我应该使用触发器?
它在MySQL文档中有记录:
此外, 您可以通过为任何TIMESTAMP列分配NULL值来初始化或更新任何TIMESTAMP列 ,除非已使用NULL属性定义允许NULL值。
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且VALUE为0,ts2 TIMESTAMP列为DEFAULT,值为CURRENT_TIMESTAMP。 更多信息,请访问http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.