有两张表,一张头表,一张行表,它们都有STATUS这个字段,如果头表有一个单据为L01的数据,在行表有三条与之关联数据,怎么判断在执行完某些业务逻辑后,行表的STAUS由已审批变为关闭,当行表的三条数据的STATUS都变为关闭时,头表的STATUS就会由已审批变为关闭,应该怎么写?
发布日期:2023-09-18 21:37:16
浏览次数:867
分类:精选文章
本文共 1282 字,大约阅读时间需要 4 分钟。
你可以使用事务和触发器来实现这个逻辑。首先,创建一个触发器,在行表的数据更新后触发,检查行表的状态是否都为关闭,如果是,则更新头表的状态为关闭。以下是一个示例: 1. 创建头表和行表的DDL语句: sql CREATE TABLE header_table ( id INT PRIMARY KEY, status VARCHAR(20) ); CREATE TABLE line_table ( id INT PRIMARY KEY, header_id INT, status VARCHAR(20), FOREIGN KEY (header_id) REFERENCES header_table(id) ); 2. 创建触发器: sql DELIMITER // CREATE TRIGGER update_header_status AFTER UPDATE ON line_table FOR EACH ROW BEGIN DECLARE line_count INT; DECLARE closed_count INT; -- 获取行表的数量和关闭状态的数量 SELECT COUNT(*) INTO line_count FROM line_table WHERE header_id = NEW.header_id; SELECT COUNT(*) INTO closed_count FROM line_table WHERE header_id = NEW.header_id AND status = '关闭'; -- 如果行表的数量等于关闭状态的数量,则更新头表的状态为关闭 IF line_count = closed_count THEN UPDATE header_table SET status = '关闭' WHERE id = NEW.header_id; END IF; END // DELIMITER ; 3. 在执行完某些业务逻辑后,更新行表的状态为关闭: try (SqlSession session = sqlSessionFactory.openSession()) { MyMapper mapper = session.getMapper(MyMapper.class); // 更新行表的状态为关闭 mapper.updateLineTableStatus(headerId, "关闭"); session.commit(); } catch (Exception e) { e.printStackTrace(); } 在上述示例中,我们使用了`updateLineTableStatus()`方法来更新行表的状态为关闭。你需要将`MyMapper`替换为你自己的Mapper接口,并确保在MyBatis配置文件中正确配置了Mapper接口的映射关系。同时,你需要根据需要修改参数的名称和值。 当行表的状态更新为关闭后,触发器会自动检查行表的状态,并更新头表的状态为关闭,如果所有行表的状态都为关闭。发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月29日 01时18分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
高赞回答:为什么高级程序员不必担心自己的技术过时?
2019-05-02
支持 Dubbo 接口文档生成的工具
2019-05-02
SpringBoot集成WebSocket,实现后台向前端推送信息
2019-05-02
优秀程序员早就学会用“状态模式”代替if-else了
2019-05-02
Windows 10将预装Windows Terminal
2019-05-02
非常强悍的 RabbitMQ 总结,写得真好!
2019-05-02
字符编码,原来是SQL不走索引的元凶之一!
2019-05-02
老板要我开发一个简单的工作流引擎 !
2019-05-02
Spring JPA整合QueryDSL
2019-05-02
Java编程思想笔记——第五章 初始化和清理
2019-05-02
关于java.text.SimpleDateFormat的parse()方法存在的坑
2019-05-02
Java编程思想笔记——第十章 内部类
2019-05-02
Java编程思想笔记——第十四章 类型信息
2019-05-02
为什么商业搜索引擎选择的索引更新策略是完全重建策略
2019-05-02
MySQL学习笔记——慢查询
2019-05-02
elastic-job监控平台搭建
2019-05-02
JVM的栈帧
2019-05-02
Java实现排列组合
2019-05-02
通俗易懂的Java线程不安全
2019-05-02
PL/SQL学习笔记之异常
2019-05-02