MySQL实现自动添加时间以及自动更新时间

本文介绍了如何在MySQL中实现自动添加时间和自动更新时间的功能。在创建表时设置默认值,可以实现在插入数据时自动记录时间。同时,通过特定设置,更新数据时UpdateTime字段会自动更新,无需额外编写SQL语句。

1 自动添加时间

创建表时使用默认值DEFAULT CURRENT_TIMESTAMP(),例如,创建表time_table

CREATE TABLE IF NOT EXISTS `time_table`(
	`Id` INT AUTO_INCREMENT NOT NULL,
	`NickName` VARCHAR(40),
	`CreateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
	PRIMARY KEY(`Id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

插入数据时,使用默认值

INSERT INTO time_table VALUES(1,'nickName'DEFAULT);

2 自动更新时间

结合上述创建新表update_time_table

CREATE TABLE IF NOT EXISTS `update_time_table`(
	`Id` INT AUTO_INCREMENT NOT NULL,
	`NickName` VARCHAR(40),
	`CreateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
	`UpdateTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(),
	PRIMARY KEY(`Id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

插入数据使用默认值

INSERT INTO update_time_table VALUES(1,'nickName'DEFAULT,DEFAULT);

更新数据时,UpdateTime字段自动更新时间,无需手动编写语句,例如

UPDATE update_time_table SET NickName = 'newNickName'

执行完上述语句,UpdateTime字段时间自动更新

MySQL 中,可以通过设置字段的默认值和自动更新属性来实现**更新时间自动更新**。通常我们使用 `TIMESTAMP` 或 `DATETIME` 类型来记录创建时间和更新时间。 --- ### ✅ 方法一:使用 `TIMESTAMP` 类型(推荐) ```sql CREATE TABLE production_specification ( id BIGINT AUTO_INCREMENT PRIMARY KEY, customer_name VARCHAR(255), project_name VARCHAR(255), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` #### 说明: - `create_time`:插入记录时自动设置为当前时间。 - `update_time`:插入时设置当前时间,更新记录时自动更新为当前时间。 --- ### ✅ 方法二:使用 `DATETIME` 类型 + 触发器 如果你使用的是 `DATETIME` 类型,MySQL 不支持 `ON UPDATE CURRENT_TIMESTAMP`(5.6.5 之前),你需要手动创建触发器: ```sql CREATE TABLE production_specification ( id BIGINT AUTO_INCREMENT PRIMARY KEY, customer_name VARCHAR(255), project_name VARCHAR(255), create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ); DELIMITER $$ CREATE TRIGGER trg_before_update_production_specification BEFORE UPDATE ON production_specification FOR EACH ROW BEGIN SET NEW.update_time = NOW(); END$$ DELIMITER ; ``` --- ### ✅ 示例:添加字段或修改字段 #### 添加 `update_time` 字段 ```sql ALTER TABLE production_specification ADD COLUMN update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; ``` #### 修改已有字段支持自动更新 ```sql ALTER TABLE production_specification MODIFY update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; ``` --- ### ✅ 注意事项 - `TIMESTAMP` 支持自动默认值和自动更新,而 `DATETIME` 需要触发器才能实现更新时间自动更新(除非使用 MySQL 5.6.5+)。 - `TIMESTAMP` 存储的是 Unix 时间戳,受时区影响;`DATETIME` 是字面值,与时区无关。 - 每张表只能有一个字段设置为 `ON UPDATE CURRENT_TIMESTAMP`(MySQL 5.6 及更早版本)。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值