繁体   English   中英

一个包含多个TIMESTAMP列的Mysql表

[英]One Mysql Table with Multiple TIMESTAMP Columns

我想要一个包含两个TIMESTAMP列的表。 一列用于跟踪创建记录的时间,另一列用于跟踪修改记录的时间。 我希望数据库处理这些值。 我不希望我的应用层需要考虑它。

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

我发现你可以有多个TIMESTAMP ,每个都没有DEFAULTON 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM