时间戳记(自动)何时更新?

如果我在类型表中具有一列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仅适用于列,不适用于DATETIMEDATE列。因为列是TIMESTAMPs,所以考虑了时区:在正确配置的服务器计算机上,这些值始终存储在UTC中,并在检索时转换为本地时间。

以上是 时间戳记(自动)何时更新? 的全部内容, 来源链接: utcz.com/qa/407640.html

回到顶部