MySQL中创建时间和更新时间的自动更新

该博客介绍了如何在MySQL中设置自动填充创建时间和更新时间的字段,通过修改表结构,利用`CURRENT_TIMESTAMP`和`ON UPDATE CURRENT_TIMESTAMP`特性,实现插入和更新记录时无需在代码层面处理时间戳。这样可以简化开发流程,提高效率。

一、需求

当新增记录的时候,MySQL自动将系统的当前时间 set 到创建时间和更新时间这两个字段中。
当更新记录的时候,MySQL 只 update 更新时间字段的时间,而不修改创建时间字段对应的值。

二、方案

找到表中对应的创建时间和更新时间的字段,将其修改如下:

  1. 创建时间字段creat_time timestamp NULL DEFAULT CURRENT_TIMESTAMP
  2. 更新时间字段update_time timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

如此便不需要在代码中对记录设置创建时间和修改时间了。在 navicat 中的操作:找到相应的表—右击—>点击“设计表”—>如下图:

插入记录时自动生成创建时间:

更新记录时自动生成修改时间:

### MySQL 创建时间更新时间MySQL 中设置创建时间更新时间为自动维护,可以通过定义 `timestamp` 或者 `datetime` 类型的字段来实现。对于这些字段,可以指定默认值为当前时间戳 (`CURRENT_TIMESTAMP`) 并允许其在记录被修改时自动更新。 #### 定义创建时间更新时间字段 为了确保每次插入新纪录时自动生成创建时间,并且每当该行的数据发生变化时自动更新最后更改的时间,可以在建表语句中这样声明这两个列: ```sql CREATE TABLE example_table ( id INT(11) NOT NULL AUTO_INCREMENT, data VARCHAR(255), c_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', u_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id) ); ``` 上述 SQL 语句中的 `c_time` 字段会在每条记录首次写入数据库时自动填充为当时的系统时间;而 `u_time` 则不仅会初始化为创建时刻的时间,在之后任何一次对该行数据的操作都会触发它再次同步到最新的系统时间[^1]。 此外,也可以采用另一种方式使用 `DATETIME` 数据类型配合相同的属性来进行相同的功能配置: ```sql CREATE TABLE another_example ( order_id INT PRIMARY KEY AUTO_INCREMENT, user_id VARCHAR(10) NOT NULL, create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', modify_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最近修改时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 这里展示了两种不同的命名约定以及注释风格,但核心逻辑保持一致——即利用 `DEFAULT CURRENT_TIMESTAMP` `ON UPDATE CURRENT_TIMESTAMP` 来简化开发工作并提高应用的一致性可靠性[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值