我在mysql表中有一个时间戳,其属性为"ON UPDATE CURRENT_TIMESTAMP".有没有办法在特殊场合手动禁用更新时间戳?(例如:更新条目以修改博客文章,但不重新更新)
And*_*ndy 131
您可以在update命令中手动将列的值设置为其当前值:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
Run Code Online (Sandbox Code Playgroud)
如果未在查询中设置该值,则将根据表定义将其更新为当前时间戳.
OMG*_*ies 45
有没有办法在特殊场合手动禁用更新时间戳?(例如:更新条目以修改博客文章,但不重新更新)
听起来您需要配置默认约束,以便它仅在插入时填充列:
DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
将其更改为仅此意味着任何修订都不会触发更新时间戳值.IE:如果你昨天创建了博客帖子,并且今天更正了错字 - 列中的日期仍然是昨天.
Oli*_*lie 21
要使表/时间戳自动更新:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
要使其不自动更新:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
注意:"default current_timestamp"部分仅在默认时间将其设置为当前戳记,因为该字段不为null.如果您愿意,可以删除not null和default.
不要使用时间戳,而是手动跟踪时间.
如果你真的想更新记录而不更新它的时间戳使用:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
Run Code Online (Sandbox Code Playgroud)