首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加'created_at‘和'updated_at’列?

问如何添加'created_at‘和'updated_at’列?
EN

Stack Overflow用户
提问于 2018-05-30 19:50:34
回答 2查看 41.8K关注 0票数 15

我需要将'updated_at‘和'created_at’列添加到MySQL数据库中一些已经存在的表中。我已经使用MySQL工作台添加了这些列,但是我应该使用什么查询来使它们正常工作?提前感谢;)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-30 19:57:32

根据参考*,您可以在列定义中使用DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句:

在使用 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP的情况下,列具有其缺省值的当前时间戳,并自动更新为当前时间戳。

鉴于:

具有DEFAULT子句但no ON UPDATE CURRENT_TIMESTAMP子句时,列具有给定的缺省值,并且不会自动更新为当前时间戳。

因此,例如,您可以使用:

代码语言:javascript
复制
CREATE TABLE t1 (
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

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

代码语言:javascript
复制
ALTER TABLE t1
ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

注意:提供的链接指的是MySQL 8.0。以前版本的语法也是一样的。不过,5.6.5之前的版本有一些不同。再次引用的话:

从MySQL 5.6.5开始,TIMESTAMP和DATETIME列可以自动初始化并更新为当前日期和时间(即当前时间戳)。在5.6.5之前,只有TIMESTAMP是这样的,并且每个表最多有一个TIMESTAMP列。

票数 52
EN

Stack Overflow用户

发布于 2018-05-30 19:58:03

尝试使用触发器。例如,当创建一个新条目时,触发器将被激活并执行,就像c#中的事件或Java中的Action listener!

使用它们,您可以在操作条目时使用创建日期或编辑日期来更新新条目。See this Documentation on how to use MySql Triggers on w3resource.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50603953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档