更新条目而不更新时间戳

问题描述 投票:0回答:5

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

mysql sql timestamp
5个回答
165
投票

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

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

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


48
投票

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

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

DEFAULT CURRENT_TIMESTAMP

更改为仅此意味着任何修订都不会触发时间戳值更新。 IE:如果您昨天创建了博文,并今天更正了拼写错误 - 列中的日期仍为昨天。


27
投票

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

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;

注意:“default current_timestamp”部分只是将其设置为默认时间的当前时间戳,因为该字段不为空。如果您愿意,您可以删除非空值和默认值。


12
投票

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

如果您确实想更新记录并且不更新其时间戳,请使用:

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

用当前值覆盖时间戳。


0
投票

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

SET LastUpdatedDate=NOW() WHERE

这个想法来自这里: 点击MYSQL记录更新TIMESTAMP字段

© www.soinside.com 2019 - 2024. All rights reserved.