Mysql数据库当字段由非0变为0,触发写入另一个数据表,创建触发器

chatgpt/2023/10/4 8:02:27

数据表test1(字段Q1,Q2,Q3,Q4,Timenow),

数据表test2(字段Q1,Q2,Q3,Q4,Timenow),与test1不同的是Timenow是日期

需求1:

当Q1、Q2、Q3、Q4任意一个由非0,变为0时,需要将旧值记录到test2,比如test1表中的Q1为100,突然变为0,那么需要将100记录到test2表中的Q1。正常情况下,变为0不会在一天内多次发生(用户更新硬件,然后进行手动Reset时的当前值记录)。

需求2:

Q1、Q2、Q3、Q4在同一天不同时段被置为0时,需要合并到一行记录上。即避免出现同一天多行的现象。

功能开发:

创建触发器,如下语句:

说明:OLD、New均为数据库的关键字,表示旧值和新值。另外数据库的可视化工具,如Mysql Front、HeidiSQL均可右键创建触发器、事件、存储过程,不过语句还需要根据需要进行调整。

CREATE Trigger rl_test1 before update on `test1` for each row
BEGIN#这里是判断是否有从非0变为0的存在,若有则下一步
IF((Old.Q1 !='0') and (NEW.Q1='0') or(Old.Q2 !='0') and (NEW.Q2='0') or(Old.Q3 !='0') and (NEW.Q3='0') or(Old.Q4 !='0') and (NEW.Q4='0') )then #若有从非0变为0,说明存在数据的Reset,重置#判断test2表中,是否有当天的行,若没有则新建一行,便于保存Reset前的数据if NOT EXISTS (SELECT * FROM test2 WHERE timenow =CURDATE()) THENINSERT INTO test2 (`Q1`) values ('0');#这里是插入一行,插入的数据可以是任意一个END IF;
END IF;#到此,已进行非0到0的判断,且判断目标表格是否有当天的数据行,若没有则插入一行。那么此时test2已存在当天的数据行。#判断是否为Q1的变化,若是,则更新至目标表格test2
IF((Old.Q1 !='0') and (NEW.Q1='0'))
then
update test2 set `Q1`=old.Q1 where timenow = curdate();
end if;#判断是否为Q2的变化,若是,则更新至目标表格test2
IF((Old.Q2 !='0') and (NEW.Q2='0'))
then
update test2 set `Q2`=old.Q2 where timenow = curdate();
end if;#判断是否为Q3的变化,若是,则更新至目标表格test2
IF((Old.Q3 !='0') and (NEW.Q3='0'))
then
update test2 set `Q3`=old.Q3 where timenow = curdate();
end if;#判断是否为Q4的变化,若是,则更新至目标表格test2
IF((Old.Q4 !='0') and (NEW.Q4='0'))
then
update test2 set `Q4`=old.Q4 where timenow = curdate();
end if;END

实测:可行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314474.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

iOS开发-AFNetworking网络请求及上传下载功能

iOS开发-AFNetworking网络请求及上传下载功能 AFNetworking是一个轻量级的iOS网络通信类库,可以方便实现网络请求。 一、使用AFNetworking 在Podfile中安装 pod AFNetworking导入AFNetworking #import "AFNetworking.h"AFNetworking下载地址&#xf…

三种无监督学习方法用于肿瘤病理图像预测任务

这里写自定义目录标题 BYOLBYOL描述基本思路示意图合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必…

[虚幻引擎 MongoDB Client 插件说明] DTMongoDB MongoDB数据库连接插件,UE蓝图可以操作MongoDB数据库增删改查。

本插件可以在UE里面使用蓝图操作MongoDB数据库, 对数据库进行查询,删除,插入,替换,更新操作。插件下载地址在文章最后。 1. 节点说明 DT MongoDB | Client Create MongoDB Client - 创建客户端对象 创建一个 MongoDB 客…

【Python系列】Python基础语法轻松入门—从变量到循环

目录 写在前面 语法介绍 变量 数据类型 整数 浮点数 字符串 列表 元组 字典 运算符 算术运算符 比较运算符 逻辑运算符 条件语句 循环语句 图书推荐 图书介绍 参与方式 中奖名单 写在前面 Python 是一种高级、解释型的编程语言,具有简单易学…

性能测试/负载测试/压力测试之间的区别

做测试一年多来,虽然平时的工作都能很好的完成,但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺,所以,在工作之余也做了一些测试方面的知识的补充。不足之处,还请大家多多交流,互相学习。 …

IP协议与ethernet协议

IP包头 IP网的意义 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网 IP数据报的格式 分组在互联网中的传送 分组传输路径 IP数…

v-model绑定checkbox无法动态更新视图

在vue2中使用v-model绑定checkbox <input type"checkbox" v-model"isChecked" :valueisChecked change"handleCheckboxChange" />监听change事件&#xff0c;并在change事件中做一些特殊处理&#xff0c;比如用户在登录时有没有阅读过隐私…

分布式事务之本地事务

&#x1f680; 分布式事务 &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#x1f3c6;&…
推荐文章