如何添加' created_at'和' updated_at'列?

时间:2018-05-30 11:50:34

标签: mysql sql database

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

2 个答案:

答案 0 :(得分:3)

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

  

两者 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP,   该列具有其默认值的当前时间戳,并且是   自动更新为当前时间戳。

,而:

  

使用DEFAULT子句但 ON UPDATE CURRENT_TIMESTAMP子句,   column具有给定的默认值,不会自动更新为   当前的时间戳。

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

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;

注意:提供的链接是指MySQL 8.0。对于以前的版本,语法也是相同的。但是对于5.6.5之前的版本有一些区别。只需再次引用manual

  

从MySQL 5.6.5开始,TIMESTAMP和DATETIME列可以自动生成   初始化并更新到当前日期和时间(即,   当前时间戳)。在5.6.5之前,这仅适用于TIMESTAMP,和   每个表最多一个TIMESTAMP列。

答案 1 :(得分:2)

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

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