MySQL时间戳自动更新

时间:2011-07-27 14:02:59

标签: mysql time timestamp

我有一个包含几个时间戳字段的表,但我遇到一些问题,其中一些字段默认为NULL。

在我的用户表中,我有这些时间戳表:

(field),(NULL),(default val)

deleted_on YES NULL
last_change_attemp YES NULL
newpass_time YES NULL
last_login YES NULL
created NO 0000-00-00 00:00:00
updates YES NULL

当我在phpMyAdmin中编辑一行时,我正在编辑的行已经为所有NULL字段选中了NULL复选框,除了第一个字段:* deleted_on *。如果我手动选中该复选框,则允许我将该字段保持为NULL。

当我通过查询更新另一个字段时,它会自动在第一个字段上执行current_timestamp。这是预期的吗?

2 个答案:

答案 0 :(得分:3)

我再次阅读了文档并注意到了这段文字

  

为TIMESTAMP列指定其他自动默认值或更新   比第一个,你必须抑制自动初始化和   显式更新第一个TIMESTAMP列的行为   为其分配一个常量DEFAULT值(例如,DEFAULT 0或   DEFAULT'2003-01-01 00:00:00')。然后,对于其他TIMESTAMP列,   除了之外,规则与第一个TIMESTAMP列相同   如果省略DEFAULT和ON UPDATE子句,则不自动   发生初始化或更新。

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

因此暂时我将字段默认为0000-00-00 00:00:00以防止自动更新。

答案 1 :(得分:0)

phpMyAdmin使用时间戳和null做一些奇怪的事情,特别是如果列被标记为CURRENT_TIMESTAMP

我不知道为什么。