返回顶部
首页 > 资讯 > 数据库 >Mysql及Navicat中如何设置字段自动填充当前时间以及修改时间。
  • 745
分享到

Mysql及Navicat中如何设置字段自动填充当前时间以及修改时间。

mysql数据库javasql 2023-08-17 07:08:46 745人浏览 独家记忆
摘要

​该文章讲解了创建时间及修改时间如何通过函数自动填充,并演示了以下几种方式实现列自动填充创建时间及修改时间: 创建表时设置字段为自动更新时间列。添加新字段为自动更新时间列。更新已有字段为自动更新时间列。通过navicat设置字段为自动

​该文章讲解了创建时间及修改时间如何通过函数自动填充,并演示了以下几种方式实现列自动填充创建时间及修改时间:

  • 创建表时设置字段为自动更新时间列。
  • 添加新字段为自动更新时间列。
  • 更新已有字段为自动更新时间列。
  • 通过navicat设置字段为自动更新时间列。

函数讲解:

CURRENT_TIMESTAMP表示插入新行时,该列将自动设置为当前时间,create_time设置了默认值为CURRENT_TIMESTAMP后,插入新数据就会在create_time字段中自动填充当前时间。
ON UPDATE CURRENT_TIMESTAMP表示数据行更新时,该列将自动设置为当前时间,update_time设置了数据更新后就会在update_time字段中自动填充当前时间。

注意:这两个函数都可以传参数,传参可以传0-6的数字,表示时间的精度,比如 CURRENT_TIMESTAMP(3)表示精确到毫秒值,在设置时函数与字段的时间精度要保持一致,否则会报错:ERROR 1067 (42000): Invalid default value for 'tmt'

支持的字段类型:

Mysql 5.6.5之后,TIMESTAMPDATETIME列都支持自动更新,且一个表可设置多个自动更新列。
mysql 5.6.5之前,只有TIMESTAMP支持自动更新,每个表只能有一个自动更新的时间列。

实现方式:

创建表时设置字段为自动更新时间列:

CREATE TABLE table_name (    id INT NOT NULL AUTO_INCREMENT,    data VARCHAR(255) NOT NULL,    create_time datetime DEFAULT CURRENT_TIMESTAMP,    update_time datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,    PRIMARY KEY (id) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

添加新字段为自动更新时间列:

ALTER TABLE `table_name`ADD COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';ADD COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间';

更新已有字段为自动更新时间列:

ALTER TABLE `table_name`MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';MODIFY COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间';

通过navicat设置字段为自动更新时间列:

选中列后在默认值写上CURRENT_TIMESTAMP,默认值下面的选项意思是当前列是否要在数据行内容更新时更新当前列时间。
在这里插入图片描述

总结

好处: 无需依赖业务更新时间,所有的db操作都会自动记录,便于排查问题。
不足: 数据库服务器和业务服务器可能存在时间差,导致业务变动的时间与数据库时间戳存在差异,给实际维护和使用带来障碍,只能尽可能的校准服务器时间,但不能绝对避免该问题。

来源地址:https://blog.csdn.net/TangBoBoa/article/details/129958447

您可能感兴趣的文档:

--结束END--

本文标题: Mysql及Navicat中如何设置字段自动填充当前时间以及修改时间。

本文链接: https://lsjlt.com/news/372443.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作