MySQL:更新条目而不更新时间戳

时间:2010-05-16 18:08:44

标签: mysql sql timestamp

我在mysql表中有一个时间戳,其属性为“ON UPDATE CURRENT_TIMESTAMP”。有没有办法在特殊场合手动禁用更新时间戳? (例如:更新条目以修改博客文章,但不重新更新)

5 个答案:

答案 0 :(得分:124)

您可以在更新命令中手动将列的值设置为其当前值:

UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;

如果您未在查询中设置该值,则会根据表定义将其更新为当前时间戳。

答案 1 :(得分:44)

  

有没有办法在特殊场合手动禁用更新时间戳? (例如:更新条目以修改博客文章,但不重新更新)

听起来您需要配置默认约束,以便它仅在插入时填充列:

DEFAULT CURRENT_TIMESTAMP

将其更改为仅此意味着任何修订都不会触发要更新的时间戳值。 IE:如果你昨天创建了博客帖子,并且今天更正了错字 - 列中的日期仍然是昨天。

答案 2 :(得分:20)

使您的表/时间戳自动更新:

ALTER TABLE myTable
CHANGE myTimestampColumn
        myTimestampColumn TIMESTAMP NOT NULL
                       DEFAULT CURRENT_TIMESTAMP 
                       ON UPDATE CURRENT_TIMESTAMP;

要使其 自动更新:

ALTER TABLE myTable
CHANGE myTimestampColumn
        myTimestampColumn TIMESTAMP NOT NULL
                       DEFAULT CURRENT_TIMESTAMP;

注意:"默认current_timestamp" part只是在默认时间将其设置为当前戳记,因为该字段不为null。如果您愿意,可以删除not null和default。

答案 3 :(得分:9)

不要使用时间戳,而是手动跟踪时间。

如果你真的想要更新记录而不更新它的时间戳使用:

UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;

答案 4 :(得分:0)

如果您在更新时更改了timestemp,那么您必须考虑到如果值已更新但未更改(更新保存值),那么它将不会更新“on update Current_timestemp”,在这种情况下您应该手动设置时间段

SET LastUpdatedDate=NOW() WHERE

这个想法来自这里: Touch MYSQL record to update TIMESTAMP field