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日

相关文章

  • 高效的数据同步工具DataX的使用及实现示例

    高效的数据同步工具DataX的使用及实现示例 简介 DataX是一款由阿里巴巴集团开发的一款高效的数据同步工具,目前已经开源,支持大规模数据迁移和同步。它支持多种类型的数据库和数据格式之间的转换,可以应用于数据仓库、数据集市、数据接口等场景。本文将介绍DataX的使用及实现示例。 安装 前置依赖 DataX需要JDK 1.8或以上版本,以及Python 2.…

    database 2023年5月22日
    00
  • Spring Boot 中使用 Redis

    Redis 在云服务器中安装配置以及 Spring Boot 中的使用 Redis 环境 redis 安装、配置,启动:(此处以云服务器上进行说明) 下载地址:https://redis.io/download/ 下载后上传到云服务器上,如 /usr/local 中 gcc 环境安装:yum install -y gcc-c++ 解压:tar -zxvf x…

    Redis 2023年4月16日
    00
  • 【Redis场景5】集群秒杀优化-分布式锁

    【Redis场景5】集群秒杀优化-分布式锁,基于Redis的分布式锁的实现及锁误删问题的解决方式 集群环境下的秒杀问题 前序 【Redis场景1】用户登录注册 【Redis场景2】缓存更新策略(双写一致) 【Redis场景3】缓存穿透、击穿问题 【Redis场景拓展】秒杀问题-全局唯一ID生成策略 【Redis场景4】单机环境下秒杀问题 在单机环境下的并发问…

    Redis 2023年4月10日
    00
  • MySQL子查询注意事项

    MySQL子查询是指在一个查询语句中嵌套另一个查询语句,通常是在WHERE子句中使用。下面详细介绍MySQL子查询的注意事项。 子查询要用小括号包含起来。 子查询可以嵌套多层。 子查询可以在SELECT、FROM、WHERE、HAVING等语句中使用。 子查询与主查询是相互独立的,即子查询能够单独执行。 子查询返回的结果只能是一行或一列,否则会报错。 子查询…

    MySQL 2023年3月9日
    00
  • PouchDB 和 SQLite 的区别

    PouchDB和SQLite的区别 1. PouchDB介绍 PouchDB 是一个适用于浏览器和 Node.js 的开源 JavaScript 数据库,使用了 Apache CouchDB 作为底层存储引擎。PouchDB 支持离线应用,同步功能,数据进行多层存储,可以工作在浏览器和 Node.js 中,允许用户在不同的环境中存储数据并进行增删改查等操作。…

    database 2023年3月27日
    00
  • 有效防止SQL注入的5种方法总结

    接下来我将为你详细讲解“有效防止SQL注入的5种方法总结”的完整攻略。这篇文章旨在帮助网站开发者科学、安全地使用SQL,正确防范SQL注入攻击,保障网站系统安全。 一、概述 SQL注入攻击是指攻击者通过在Web应用程序输入的参数中注入SQL代码,从而控制后台的数据库服务器。SQL注入攻击可能导致数据泄露、系统瘫痪、用户信息被窃取等严重后果。下面将介绍五种有效…

    database 2023年5月21日
    00
  • Python连接数据库并批量插入包含日期记录的操作

    下面是Python连接数据库并批量插入包含日期记录的操作的完整攻略: 1. 连接数据库 Python连接数据库需要使用到相应的的库,比如MySQL数据库需要使用pymysql库。下面是一个连接MySQL数据库的样例代码: import pymysql #连接数据库 db = pymysql.connect(host = ‘localhost’, port =…

    database 2023年5月21日
    00
  • sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解

    下面我将详细讲解“SQL Server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解”的完整攻略。 一、创建登陆账户的SQL语句格式 在SQL Server 2008中,创建登录账户的SQL语句格式如下: CREATE LOGIN 登录名 WITH PASSWORD = ‘登录密码’, DEFAULT_DATABASE = 默认数据库名, DE…

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