Mysql及Navicat中设置字段自动填充当前时间及修改时间实现

 更新时间:2023年07月13日 09:29:24   作者:TangBoBoa  
这篇文章主要给大家介绍了关于Mysql及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操作都会自动记录,便于排查问题。

不足: 数据库服务器和业务服务器可能存在时间差,导致业务变动的时间与数据库时间戳存在差异,给实际维护和使用带来障碍,只能尽可能的校准服务器时间,但不能绝对避免该问题。​

到此这篇关于Mysql及Navicat中设置字段自动填充当前时间及修改时间实现的文章就介绍到这了,更多相关Mysql自动填充当前时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql支持跨表delete删除多表记录

    mysql支持跨表delete删除多表记录

    Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录
    2012-12-12
  • Mysql InnoDB删除数据后释放磁盘空间的方法

    Mysql InnoDB删除数据后释放磁盘空间的方法

    这篇文章主要介绍了Mysql InnoDB删除数据后释放磁盘空间的方法,Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长,本文就讲解释放磁盘空间的方法,需要的朋友可以参考下
    2015-04-04
  • mysql存储过程如何利用临时表返回结果集

    mysql存储过程如何利用临时表返回结果集

    这篇文章主要介绍了mysql存储过程如何利用临时表返回结果集,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • MySQL中查询JSON字段的实现示例

    MySQL中查询JSON字段的实现示例

    MySQL自5.7版本起,对JSON数据类型提供了全面的支持,本文主要介绍了MySQL中查询JSON字段的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • mysql设置远程访问数据库的多种方法

    mysql设置远程访问数据库的多种方法

    最近有一同学问我MySQL无法远程访问怎么呢,但能使用localhost来进行方法,下面脚本之家来给各位介绍一下解决办法,需要的朋友可以参考下
    2013-10-10
  • 如何将Excel文件导入MySQL数据库

    如何将Excel文件导入MySQL数据库

    这篇文章主要为大家详细介绍了Excel文件导入MySQL数据库的具体方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 详解MySQL客户端/服务器运行架构

    详解MySQL客户端/服务器运行架构

    这篇文章主要介绍了详解MySQL客户端/服务器运行架构,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • MySQL中lower_case_table_names作用及使用小结

    MySQL中lower_case_table_names作用及使用小结

    在使用DataEase连接外部数据库时,可能会遇到启动报错的问题,官方文档指出,修改数据库配置文件中的lower_case_table_names=1参数可以解决此问题,此参数控制表名大小写敏感性,感兴趣的可以了解一下
    2024-09-09
  • Ubuntu上安装MySQL+问题处理+安全优化

    Ubuntu上安装MySQL+问题处理+安全优化

    这篇文章主要汇总介绍了Ubuntu上安装MySQL+问题处理+安全优化的相关事项,非常的细致全面,有需要的小伙伴可以参考下
    2016-03-03
  • mysql 复制行数据命令经验分享(Mysql 复制一条数据)

    mysql 复制行数据命令经验分享(Mysql 复制一条数据)

    有时候表里有一行已经添加好的数据,想要多复制几百条用来测试比如要分页测试等,需要多条数据,但是有时候数据表字段太多了,有几十个,一个一个手写那是不可能的
    2023-09-09

最新评论