gpt4 book ai didi

mysql - 时间戳(自动)何时更新?

转载 作者:行者123 更新时间:2023-11-29 16:29:16 27 4
gpt4 key购买 nike

如果我的表中有一个 TIMESTAMP 类型的列,并且默认为:CURRENT_TIMESTAMP,如果我更新值,该列是否会更新为当前时间戳同一行中的任何其他列?
似乎没有,但我不确定这是否应该发生。
我无法理解这意味着什么(from MySQL documentation):

If the column is auto-updated, it is automatically updated to the current timestamp when the value of any other column in the row is changed from its current value. The column remains unchanged if all other columns are set to their current values. To prevent the column from updating when other columns change, explicitly set it to its current value. To update the column even when other columns do not change, explicitly set it to the value it should have]2

最佳答案

给出命令SHOW CREATE TABLE无论什么

然后看table definition .

它可能有这样一行

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而不改变时间戳,即

To prevent the column from updating when other columns change

那么您需要发布此类更新。

UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'

这适用于 TIMESTAMPDATETIME 列。 (在 MySQL 版本 5.6.5 之前,它仅适用于 TIMESTAMP)当您使用 TIMESTAMP 时,时区会被考虑在内:在正确配置的服务器计算机上,这些值始终存储在 UTC 中,并在检索时转换为本地时间。

关于mysql - 时间戳(自动)何时更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54038488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com