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