MySQL自动填充create_time和update_time的两种方式

MySQL的自动填充 create_time 和 update_time 字段有2种常见方式:

  1. 使用触发器自动填充

可以在创建表的时候编写触发器来自动生成时间,以下是示例代码:

CREATE TRIGGER `trg_users_created_at` BEFORE INSERT
ON `users` FOR EACH ROW
SET NEW.created_at = NOW(), NEW.updated_at = NOW();

CREATE TRIGGER `trg_users_updated_at` BEFORE UPDATE
ON `users` FOR EACH ROW
SET NEW.updated_at = NOW();

以上代码在新增数据和更新数据时会自动填充 created_at 和 updated_at 字段,其中 created_at 在 INSERT 时生效,在 UPDATE 时生成值会被更新,而 updated_at 在 INSERT 和 UPDATE 时都会生效。

  1. 使用 TIMESTAMP 默认值

在创建数据表的时候,直接使用 TIMESTAMP 数据类型并设置默认值为 CURRENT_TIMESTAMP,如下示例:

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT "",
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

以上代码直接给 create_time 和 update_time 设定了默认值为 CURRENT_TIMESTAMP,INSERT 和 UPDATE 时会自动更新时间字段。

当使用 TIMESTAMP 类型来记录时间因为有一定的误差和不同数据库的时区问题,所以如果对时间精度要求比较高或是对时间要求非常严格的业务需要自己手动维护时间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL自动填充create_time和update_time的两种方式 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Oracle数据库ORA-12560错误问题的解决办法

    Oracle数据库ORA-12560错误问题的解决办法 问题描述 在使用Oracle数据库时,有可能会遇到ORA-12560错误,该错误通常会出现在Oracle数据库连接时。 错误原因 ORA-12560错误的主要原因是Oracle数据库的监听程序没有启动导致的。也有可能是因为监听程序正在运行,但没有正确配置导致的。 解决办法 要解决ORA-12560错误,…

    database 2023年5月19日
    00
  • Oracle数据库如何创建第一张表

    下面是Oracle数据库创建第一张表的完整攻略: 一、登录到Oracle数据库 首先,在命令行或图形界面工具中登陆Oracle数据库。可以使用以下命令进行登录: sqlplus username/password@database 其中,username是数据库的用户名,password是登录密码,database是数据库名字。例如,如果您的用户名为test…

    database 2023年5月21日
    00
  • java线程阻塞中断与LockSupport使用介绍

    Java线程阻塞中断与LockSupport使用介绍 在Java多线程编程中,线程的阻塞和中断处理是非常重要的话题。本篇攻略将会深入讲解Java线程阻塞及中断的概念和实现方法,并介绍Java 5中新增的LockSupport工具类的基本使用。 Java线程阻塞的概念 在Java多线程编程中,线程的阻塞指的是线程在等待某个条件满足时,暂时挂起自己的执行,等待条…

    database 2023年5月21日
    00
  • 如何使用Python在MySQL中使用行级锁?

    在MySQL中,行级锁是一种用于控制并发访问的机制,它可以确保多个用户同时访问同一行时不会发生冲突。在Python中,可以使用MySQL连接来执行行级锁查询。以下是在Python使用行级锁的完整攻略,包括行级锁的基本语法、使用行级锁的例以及如何在Python中使用行。 行级锁的基本语法 在MySQL中,可以使用SELECT语句来获取行级锁。以下是行级锁的基语…

    python 2023年5月12日
    00
  • 如何使用Python获取MySQL中的数据库列表?

    要使用Python获取MySQL中的数据库列表,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python获取MySQL中的数据库的完整攻略: 连接MySQL 要连接到MySQL,需要提供MySQL的主机名、用户名、和密码。可以使用以下代码连接MySQL“`py…

    python 2023年5月12日
    00
  • Mysql使用on update current_timestamp问题

    Mysql中使用on update current_timestamp的功能可以在更新某个字段时自动将该字段的值更新为当前的时间戳,该功能适用于需要记录最后一次更新时间的场景。 以下是实现步骤: 创建数据表时,在需要记录最后一次更新时间的字段上添加on update current_timestamp属性,如下: CREATE TABLE `user_tab…

    database 2023年5月22日
    00
  • MySQL模糊查询语句整理集合

    MySQL模糊查询语句整理集合 在MySQL中,我们经常需要进行模糊查询来查找信息。这篇攻略将介绍MySQL中常用的模糊查询语句,包括LIKE、NOT LIKE、REGEXP等。 LIKE语句 LIKE语句是最常用的模糊查询语句之一。它可以匹配指定模式的字符串。 语法 SELECT column_name(s) FROM table_name WHERE c…

    database 2023年5月21日
    00
  • CentOS7.5使用mysql_multi方式安装MySQL5.7.28多实例(详解)

    我们来详细讲解“CentOS7.5使用mysql_multi方式安装MySQL5.7.28多实例(详解)”的操作步骤。 1. 准备工作 1.1 安装mysql源 # 下载rpm包 wget http://repo.mysql.com/mysql57-community-release-el7.rpm # 安装rpm包 sudo rpm -ivh mysql5…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部