我需要将'updated_at‘和'created_at’列添加到MySQL数据库中一些已经存在的表中。我已经使用MySQL工作台添加了这些列,但是我应该使用什么查询来使它们正常工作?提前感谢;)
发布于 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子句时,列具有给定的缺省值,并且不会自动更新为当前时间戳。
因此,例如,您可以使用:
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之前的版本有一些不同。再次引用的话:
从MySQL 5.6.5开始,TIMESTAMP和DATETIME列可以自动初始化并更新为当前日期和时间(即当前时间戳)。在5.6.5之前,只有TIMESTAMP是这样的,并且每个表最多有一个TIMESTAMP列。
发布于 2018-05-30 19:58:03
尝试使用触发器。例如,当创建一个新条目时,触发器将被激活并执行,就像c#中的事件或Java中的Action listener!
使用它们,您可以在操作条目时使用创建日期或编辑日期来更新新条目。See this Documentation on how to use MySql Triggers on w3resource.
https://stackoverflow.com/questions/50603953
复制相似问题