当前位置: 首页 > 面试题库 >

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

商燕七
2023-03-14
问题内容

如果我在类型表中具有一列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中,并在检索时转换为本地时间。



 类似资料:
  • 系统支持自动写入创建和更新的时间戳字段(默认关闭),有两种方式配置支持。 第一种方式是全局开启,在数据库配置文件中进行设置: // 开启自动写入时间戳字段 'auto_timestamp' => true, 第二种是在需要的模型类里面单独开启: <?php namespace app\index\model; use think\Model; class User extends Model

  • 我正在使用FluentD(v.12最后一个稳定版本)向Kafka发送消息。但是FluentD正在使用一个旧的KafkaProducer,所以记录时间戳总是设置为-1。因此,我必须使用WallclockTimestampExtrator将记录的时间戳设置为消息到达kafka时的时间点。 是否有特定于Kafka Streams的解决方案? 我真的感兴趣的时间戳,是由Fluentd在消息中发送的: “时

  • 问题内容: 我有一列称为“ s_timestamp”。 如何返回时间戳中具有当天的所有记录? 例如, 我想要以下输出: 让我知道是否不清楚。 问题答案: 只是使用。例如 日期() CURDATE()

  • 问题内容: mysql有什么方法可以在创建时自动将时间戳存储在记录行中。我试图将timestamp(数据类型)与current_timestamp用作默认值,但后来意识到,每当记录更新时,它将更新。我只需要一些可以存储创建时间戳记的东西。 谢谢 问题答案: 设置DEFAULT约束以使用CURRENT_TIMESTAMP: 对于现有表,请使用ALTER TABLE语句: 除非您为date_colum

  • 问题内容: 如何在到期时间戳后自动执行MySQL更新或插入? 因此,可以说时间戳是,我希望在经过该日期和时间后自动更新MySQL DB,因此今天之后。 我想更新我的商品,但是我的网站没有打开浏览器,所以我想我需要某种服务器触发器吗?我怎么做?非常感谢 我有以下查询每1秒执行一次,它不起作用: 问题答案: 使用可以用于 MySQL事件(恕我直言最好的候选人) cron作业或Windows Task

  • 我正在使用FluentD(V.12最后一个稳定版本)向Kafka发送消息。但是FluentD使用的是旧的KafkaProducer,因此记录时间戳始终设置为-1。因此,我必须使用WallclockTimestampExtractor将记录的时间戳设置为消息到达Kafka时的时间点。 我真正感兴趣的时间戳是由fluentd在消息中发送的: “时间戳”:“1507885936”,“主机”:“V.X.Y