我希望有一个包含两个TIMESTAMP
列的表。一列用于跟踪记录的创建时间,另一列用于跟踪记录的修改时间。我希望数据库处理这些值。我不想让我的应用层去考虑这个问题。
我知道,如果有一个带有DEFAULT CURRENT_TIMESTAMP
或ON UPDATE CURRENT_TIMESTAMP
的TIMESTAMP
列,就不能有另一个TIMESTAMP
列。您可以使用DATETIME
,但据我所知,在触发器之外没有办法默认它。
我发现在创建记录时,保留每个都没有DEFAULT
或ON UPDATE
,并插入NULL
,从而使每个都具有当前时间戳,这样就可以实现can have multiple TIMESTAMP
columns。从那时起,第一列将自动更新。
这非常有效,但它给我留下了一种有趣的感觉。就像这可能是一个bug,它可以在任何时候被修补。如果这是它应该工作的方式,那么就这样吧。我会高高兴兴地走我的路。谁能告诉我,这是最好的方法,还是我应该使用触发器?
发布于 2014-04-13 00:29:20
5.6.1之前的MySQL版本不允许在同一个表中有两个TIMESTAMP
列,除非您正确地注意到不使用默认值并允许使用null。
MySQL 5.6.+允许在一个表中有两个或多个TIMESTAMP
列。
更多信息请点击这里:http://shankargopal.blogspot.in/2013/03/mysql-566-timestamp-columns-and-default.html
发布于 2015-04-14 00:55:19
MySQL允许在同一个表中有多个时间戳列,请检查以下示例:
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时间戳列的默认值为0,ts2时间戳列的默认值为CURRENT_TIMESTAMP。更多信息请点击此处http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
https://stackoverflow.com/questions/4851672
复制相似问题