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定时全库备份数据库

    MySQL定时全库备份数据库

    数据备份真的很重要, 因为可能有一天数据会被莫名其妙的删掉了,本文主要介绍了MySQL定时备份数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • mysql远程跨库联合查询的示例

    mysql远程跨库联合查询的示例

    本文主要介绍了mysql远程跨库联合查询的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 基于mysql多实例安装的深入解析

    基于mysql多实例安装的深入解析

    本篇文章是对mysql多实例安装进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • mysql-connector-java与Mysql、Java的对应版本问题

    mysql-connector-java与Mysql、Java的对应版本问题

    这篇文章主要介绍了mysql-connector-java与Mysql、Java的对应版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • mysql查询如何去掉多余零

    mysql查询如何去掉多余零

    这篇文章主要介绍了mysql查询如何去掉多余零问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MySQL索引查询limit offset及排序order by用法

    MySQL索引查询limit offset及排序order by用法

    这篇文章主要介绍了MySQL限制数据返回条数limit offset及排序order by用法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法

    win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法

    这篇文章主要介绍了win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法,需要的朋友可以参考下
    2016-06-06
  • Mysql数据库中的redo log 写入策略和binlog 写入策略

    Mysql数据库中的redo log 写入策略和binlog 写入策略

    这篇文章主要介绍了Mysql redo log 写入策略和binlog 写入策略,通过本文学习可以了解redo log的写入策略是由InnoDB提供了innodb_flush_log_at_trx_commit参数,binlog的写入策略,write 和fsync的时机,是由参数sync_binlog控制的,需要的朋友可以参考下
    2022-04-04
  • Mysql 查询数据库容量大小的方法步骤

    Mysql 查询数据库容量大小的方法步骤

    这篇文章主要介绍了Mysql 查询数据库容量大小的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • mysql 8.0.15 winx64解压版图文安装教程

    mysql 8.0.15 winx64解压版图文安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.15 winx64解压版图文安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论