当前位置: 首页 > news >正文

自动更新工期触发器(MYSQL)

        触发器(Trigger)是一种数据库对象,它在特定事件发生时自动执行的存储过程。通常,触发器会在插入、更新或删除数据时自动触发,并且可以用来维护数据完整性、记录审计日志、实现复杂的业务逻辑等。

项目施工完成 自动计算工期的触发器

项目表

CREATE TABLE IF NOT EXISTS construction (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '施工记录ID',project_name VARCHAR(255) NOT NULL COMMENT '项目名称',start_date DATE COMMENT '施工开始日期',end_date DATE COMMENT '施工结束日期',duration INT COMMENT '工期(天,自动计算)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

创建触发器

需要创建两个触发器,分别处理插入新记录更新已有记录时的工期计算,确保当end_date不为空且start_date也不为空时,自动计算工期。

-- 创建更新前触发的触发器
CREATE TRIGGER calc_duration_before_update
BEFORE UPDATE ON construction
FOR EACH ROW
BEGIN-- 当结束日期和开始日期都不为空时,重新计算工期IF NEW.end_date IS NOT NULL AND NEW.start_date IS NOT NULL THENSET NEW.duration = DATEDIFF(NEW.end_date, NEW.start_date);END IF;DELIMITER ;-- 创建更新前触发的触发器
CREATE TRIGGER calc_duration_before_update
BEFORE UPDATE ON construction
FOR EACH ROW
BEGIN-- 当结束日期和开始日期都不为空时,重新计算工期IF NEW.end_date IS NOT NULL AND NEW.start_date IS NOT NULL THENSET NEW.duration = DATEDIFF(NEW.end_date, NEW.start_date);END IF;DELIMITER ;

触发器说明

触发时机BEFORE INSERTBEFORE UPDATE,确保在数据写入表之前完成工期计算。

计算逻辑:使用DATEDIFF(end_date, start_date)函数计算两个日期的天数差(结果为整数,正数表示正常工期,负数表示开始日期晚于结束日期,可根据业务需求调整)。

触发条件:仅当end_date(结束日期)和start_date(开始日期)都不为空时才计算,避免空值导致的错误。

触发器生效测试

假设现在有一个项目的记录如下:

INSERT INTO construction (project_name, start_date, end_date) 
VALUES ('办公楼装修', '2023-01-01', '2023-01-10');

更新结束日期(自动重新计算工期)

UPDATE construction 
SET end_date = '2023-01-15' 
WHERE id = 1;

结果

       通过触发器,即可实现当施工结束日期不为空时自动计算工期的功能。

http://www.dtcms.com/a/593577.html

相关文章:

  • 企业网站建设的方式有哪些方式网页设计版权怎么写
  • 关键词解释:范数(Norm)
  • 用Python生成个性化的电子邮件签名
  • [PowerShell入门教程] 第2天:变量、管道、对象操作与执行策略详解
  • 做网站运营的职业生涯规划wordpress 水印插件
  • 护照阅读器在酒店行业的应用
  • 继承的概念及使用
  • 建网站的地址手工制作小船
  • 技术选型深度评估:“六行神算”平台在医疗AI项目中的架构适配性
  • VLAN 和 VXLAN
  • PC微信 device uuid 算法
  • 外国网站的浏览器下载网站程序是什么意思
  • 【Docker多节点部署】基于“配置即身份“理念的 Docker 多节点 StarRocks 高可用集群自动化部署方案
  • 如何选择适合企业的数据仓库建模工具?​
  • Ethernet ip转SPI嵌入式板卡-让机器人与单片机互相联动
  • 免费推广网站大全下载安装南山网站-建设深圳信科
  • 【ZeroRange WebRTC】OpenSSL 与 WebRTC:原理、集成与实践指南
  • AnyVP*:企业级远程办公SSL深度技术解析
  • 重庆营销型网站建设多少钱学校网站功能描述
  • Spring @Component 和 @Bean 的区别与最佳实践
  • 怎么给自己公司做网站小影wordpress
  • C# 特性详解
  • 《 Linux 修炼全景指南: 六 》软件包管理器
  • QNAP紧急修复Pwn2Own 2025比赛中遭利用的7个0Day漏洞
  • 大学学部网站建设工作深圳牌申请网站空间
  • LeetCode算法学习之乘积最大子数组
  • 网站建设的业务范围福建住房城乡建设部网站
  • android启动模式使用场景具体说明
  • STM32 - Embedded IDE - GCC - 编译器设置的最佳方案
  • 霸州网站制作建免费的网站吗