如何添加“created\u at”和“updated\u at”列?

bxfogqkk  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(218)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

两年前关门了。
改进这个问题
我需要添加'updated\u at'和'created\u at'列到mysql数据库中已经存在的一些表中。我已经使用mysql工作台添加了这些列,但是我应该使用什么查询使它们正常工作呢?提前感谢;)

b5buobof

b5buobof1#

根据参考手册*您可以使用 DEFAULT CURRENT_TIMESTAMP 以及 ON UPDATE CURRENT_TIMESTAMP 列定义中的子句:
使用默认的current\u timestamp和on update current\u timestamp,列的默认值为current timestamp,并自动更新为当前时间戳。
鉴于:
如果有default子句但没有on update current\u timestamp子句,则列具有给定的默认值,并且不会自动更新为当前时间戳。
例如,您可以使用:

CREATE TABLE t1 (
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

要将列添加到已存在的表中,可以使用:

ALTER TABLE t1
ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

注:提供的链接参考MySQL8.0。语法对于以前的版本也是一样的。但是5.6.5之前的版本有一些不同。再引用一下手册:
从mysql 5.6.5开始,timestamp和datetime列可以自动初始化并更新为当前日期和时间(即当前时间戳)。在5.6.5之前,这只适用于timestamp,并且每个表最多有一个timestamp列。

vwkv1x7d

vwkv1x7d2#

尝试使用触发器。例如,当创建一个新条目时,触发器将被激活并执行,就像c#中的事件或java中的动作侦听器一样!
使用它们,您可以使用创建日期更新新条目,或者在操作条目时使用编辑日期更新新条目。请参阅有关如何在w3resource上使用mysql触发器的文档。

相关问题