我在 mysql 表中有一个属性为“ON UPDATE CURRENT_TIMESTAMP”的时间戳。有没有办法在特殊情况下手动禁用更新时间戳? (例如:更新条目以修改博客文章,但不重新日期)
您可以在更新命令中手动将列的值设置为其当前值:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
如果您未在查询中设置该值,它将根据表定义更新为当前时间戳。
有没有办法在特殊情况下手动禁用更新时间戳? (例如:更新条目以修改博客文章,但不重新日期)
听起来您需要配置默认约束,以便它仅在插入时填充列:
DEFAULT CURRENT_TIMESTAMP
更改为仅此意味着任何修订都不会触发时间戳值更新。 IE:如果您昨天创建了博文,并今天更正了拼写错误 - 列中的日期仍为昨天。
要使您的表/时间戳自动更新:
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”部分只是将其设置为默认时间的当前时间戳,因为该字段不为空。如果您愿意,您可以删除非空值和默认值。
不要使用时间戳,而是手动跟踪时间。
如果您确实想更新记录并且不更新其时间戳,请使用:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
用当前值覆盖时间戳。
如果您确实在更新时更改了 timestemp,那么您必须考虑到,如果该值已更新但未更改(更新了保存值),那么它将不会更新“更新时 Current_timestemp”,在这种情况下,您应该设置手动设置时间
SET LastUpdatedDate=NOW() WHERE
这个想法来自这里: 点击MYSQL记录更新TIMESTAMP字段