发出命令 SHOW CREATE TABLE whatever
然后看表定义。
它可能有这样一条线
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
在里面。 DEFAULT CURRENT_TIMESTAMP
表示INSERT
没有明确的时间戳设置的任何人都会使用当前时间。同样,这ON UPDATE CURRENT_TIMESTAMP
意味着没有显式时间戳的任何更新都会导致当前时间戳值的更新。
您可以在创建表时控制此默认行为。
或者,如果首先没有正确创建时间戳列,则可以对其进行更改。
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
这将导致对表的INSERT和UPDATE操作都自动更新时间戳列。如果您要更新whatevertable
而不更改时间戳,即,
当其他列更改时,防止更新列
那么您需要发布此类更新。
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
这适用于TIMESTAMP
和DATETIME
列。(在MySQL 5.6.5之前的版本中,它仅可与TIMESTAMP
s一起使用)使用TIMESTAMP
s时,考虑了时区:在正确配置的服务器计算机上,这些值始终存储在UTC中,并在检索时转换为本地时间。
test
表并更新示例数据来尝试此操作。顺便说一下,它不会timestamp
在更新中更新类型列。如果未在列定义中添加ON UPDATE CURRENT_TIMESTAMP