mysql自动更新时间的触发器

本文介绍如何使用Navicat创建两个触发器,分别用于在插入和更新`t_recruitment_source`表时自动设置`InsertTime`和`UpdateTime`字段为当前日期。

在插入和更新数据之前分别获取当前系统时间来更新 

CREATE TRIGGER `trg_recruitment_source_insert` BEFORE INSERT 
ON `t_recruitment_source` 
FOR EACH ROW SET new.InsertTime = CURRENT_DATE;


CREATE TRIGGER `trg_recruitment_source_update` BEFORE UPDATE 
ON `t_recruitment_source` 
FOR EACH ROW SET new.UpdateTime = CURRENT_DATE;

在navicat中如下填写即可

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、付费专栏及课程。

余额充值