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

本文介绍如何通过MySQL的timestamp字段属性实现记录创建时间和更新时间的自动填充与更新,避免编程时手动设置时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

方案:
找到表中对应的创建时间和更新时间的字段,将其修改为下列代码所示。
创建时间字段

`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP

更新时间字段

 `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]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值