时间戳记(自动)何时更新?
如果我在类型表中具有一列TIMESTAMP
并且具有默认值:CURRENT_TIMESTAMP如果我更新同一行中 任何
其他列的值,此列是否会更新为当前时间戳?
似乎没有,但是我不确定这是否应该发生。
我不明白这是什么意思(来自MySQL文档):
如果该列是自动更新的,则当该行中任何其他列的值从其当前值更改时,它将自动更新为当前时间戳。如果所有其他列均设置为其当前值,则该列保持不变。为防止当其他列更改时该列更新,请将其显式设置为当前值。即使在其他列不变的情况下也要更新该列,请将其显式设置为应具有的值]
2
回答:
发出命令 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
或DATE
列。因为列是TIMESTAMP
s,所以考虑了时区:在正确配置的服务器计算机上,这些值始终存储在UTC中,并在检索时转换为本地时间。
以上是 时间戳记(自动)何时更新? 的全部内容, 来源链接: utcz.com/qa/407640.html