关闭。这个问题需要细节或清晰。它目前不接受答案。**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
两年前关门了。改进这个问题我需要添加'updated\u at'和'created\u at'列到mysql数据库中已经存在的一些表中。我已经使用mysql工作台添加了这些列,但是我应该使用什么查询使它们正常工作呢?提前感谢;)
b5buobof1#
根据参考手册*您可以使用 DEFAULT CURRENT_TIMESTAMP 以及 ON UPDATE CURRENT_TIMESTAMP 列定义中的子句:使用默认的current\u timestamp和on update current\u timestamp,列的默认值为current timestamp,并自动更新为当前时间戳。鉴于:如果有default子句但没有on update current\u timestamp子句,则列具有给定的默认值,并且不会自动更新为当前时间戳。例如,您可以使用:
DEFAULT CURRENT_TIMESTAMP
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;
注:提供的链接参考MySQL8.0。语法对于以前的版本也是一样的。但是5.6.5之前的版本有一些不同。再引用一下手册:从mysql 5.6.5开始,timestamp和datetime列可以自动初始化并更新为当前日期和时间(即当前时间戳)。在5.6.5之前,这只适用于timestamp,并且每个表最多有一个timestamp列。
vwkv1x7d2#
尝试使用触发器。例如,当创建一个新条目时,触发器将被激活并执行,就像c#中的事件或java中的动作侦听器一样!使用它们,您可以使用创建日期更新新条目,或者在操作条目时使用编辑日期更新新条目。请参阅有关如何在w3resource上使用mysql触发器的文档。
2条答案
按热度按时间b5buobof1#
根据参考手册*您可以使用
DEFAULT CURRENT_TIMESTAMP
以及ON UPDATE CURRENT_TIMESTAMP
列定义中的子句:使用默认的current\u timestamp和on update current\u timestamp,列的默认值为current timestamp,并自动更新为当前时间戳。
鉴于:
如果有default子句但没有on update current\u timestamp子句,则列具有给定的默认值,并且不会自动更新为当前时间戳。
例如,您可以使用:
要将列添加到已存在的表中,可以使用:
注:提供的链接参考MySQL8.0。语法对于以前的版本也是一样的。但是5.6.5之前的版本有一些不同。再引用一下手册:
从mysql 5.6.5开始,timestamp和datetime列可以自动初始化并更新为当前日期和时间(即当前时间戳)。在5.6.5之前,这只适用于timestamp,并且每个表最多有一个timestamp列。
vwkv1x7d2#
尝试使用触发器。例如,当创建一个新条目时,触发器将被激活并执行,就像c#中的事件或java中的动作侦听器一样!
使用它们,您可以使用创建日期更新新条目,或者在操作条目时使用编辑日期更新新条目。请参阅有关如何在w3resource上使用mysql触发器的文档。