
有两张表,一张头表,一张行表,它们都有STATUS这个字段,如果头表有一个单据为L01的数据,在行表有三条与之关联数据,怎么判断在执行完某些业务逻辑后,行表的STAUS由已审批变为关闭,当行表的三条数据的STATUS都变为关闭时,头表的STATUS就会由已审批变为关闭,应该怎么写?
发布日期:2023-09-18 21:37:16
浏览次数:640
分类:精选文章
本文共 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]2023年08月29日 14时48分23秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
浅谈软件工程中的代码评审
2019-03-07
Vue前端测试实践
2019-03-07
财务系统库存重构现有量方案追忆
2019-03-07
一致性算法Raft的原理简介与源码初探
2019-03-07
关于mysql事务&MVCC以及锁机制的总结
2019-03-07
equals和==
2019-03-07
JVM、JRE、JDK、Java SE、Java EE、Java ME
2019-03-07
索引(Index)
2019-03-07
向下兼容、向上兼容、向前兼容、向后兼容
2019-03-07
每天记录学习的新知识 : 导入信任证书到 Jdk
2019-03-07
每天记录学习的新知识 : gradle配置国内镜像
2019-03-07
每天记录学习的新知识 : 编译成功但是无法运行
2019-03-07
每天记录学习的新知识 : 绑定完GitHub怎么提交项目
2019-03-07
每天记录学习的新知识 : 正则表达式限制车牌号码
2019-03-07
每天记录学习的新知识 : MagicIndicator 使用记录
2019-03-07
每天记录学习的新知识 : RM 删除命令
2019-03-07
每天记录学习的新知识 : PM 操作应用命令
2019-03-07
每天记录学习的新知识: 源生应用安装
2019-03-07
每天记录学习的新知识:PopupWindow
2019-03-07
每天记录学习的知识:Comparable 多条件比较器
2019-03-07