我需要添加' updated_at'和' created_at'列到MySQL数据库中某些已存在的表。我已经使用MySQL Workbench添加了这些列,但是我应该使用什么查询来使它们正常工作?在此先感谢;)
答案 0 :(得分:3)
根据参考manual *,您可以在列定义中使用DEFAULT CURRENT_TIMESTAMP
和ON 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.