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

复盘—MySQL触发器实现监听数据表值的变化,对其他数据表做更新 这篇文章介绍了MySQL中创建触发器来监控订单商品表状态变化并更新订单备注的方法。主要内容包括: 基础语法:使用DELIMITER临时修改SQL结束符以创建多语句触发器 需求演进: 第一版:仅检查单行记录的售后数量变化 第二版:根据售后数量是否为0设置不同备注 第三版:考虑同一订单多条商品记录的全局状态判断 关键改进点: 通过子查询检查同一订单所有商品的售后状态 使用COUNT(ID)=0替代NOT EXISTS提高效率 添加索引优化性能 注意事项: 并发更新的潜在问题 NULL值处理 性能优化建议 阅读详情

数据表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()) 
  THEN
  INSERT 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

实测:可行

随机森林的可解释性分析(含python代码) 随机森林的“黑箱”特性逐渐凸显,这使得我们难以理解和解释模型内部的工作机制。对于许多应用场景而言,仅仅获得高准确率的预测结果是不够的;了解预测背后的逻辑同样重要,特别是在医疗诊断、金融风险评估等领域。因此,对随机森林进行可解释性分析变得尤为重要。 阅读详情

相关推荐

芯片低功耗设计的两种常用EDA流程

如题。

EricWZY2008的专栏 5557

数据库基础篇 《17.触发器》

数据库基础篇 《17.触发器》

weixin_44981126的博客 1303

MacOS蓝牙连接疑难杂症:从基础排查到高级修复全攻略

本文提供了一份全面的MacOS蓝牙故障排查与修复指南。从基础的菜单栏检查、终端命令诊断,到软/硬重启蓝牙服务、删除配置文件,再到使用blueutil工具、重置NVRAM等高级方法,系统性地解决了蓝牙无法连接、连接不稳定等常见问题。最后还分享了环境干扰排查、预防措施及硬件故障自检方法,帮助用户彻底解决Mac蓝牙连接难题。

weixin_29271263的博客 450

sqlserver 实现数据变动触发信息

1、建立存储过程,功能是动态写入文件中信息,可以在触发器或存储过程调用。 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create proc [dbo].[SP_SendMagToFile] ( @path varchar(100), @fileName varchar(100), @msg varch...

weixin_30266885的博客 533

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

本文为本人在安装pgvector中踩过的坑,已找到解决方法,现向大家分享。

m0_62627802的博客 2万+

高等数学第五章---定积分(§5.3定积分的计算方法)

这篇博客详细讲解定积分的计算方法,包括直接法、凑微分法、变量代换法和分部积分法。通过典型例题演示如何运用这些技巧计算定积分,特别强调换元必换限的原则和奇偶函数的简化处理。内容涵盖代数变形、三角代换、分段函数积分等常见题型,并附有详细的解题步骤和常见错误分析。适合微积分学习者系统掌握定积分计算技巧,提升解题效率。文中还包含积分等式证明和变限积分函数求导等进阶内容,帮助读者深入理解定积分的应用。

2302_77045867的博客 4337

SQLSERVER 触发器 将一个服务器上的数据库中数据插入到另一个服务器上的数据库中怎么做...

首先要执行 sp_addlinkedserver '服务器ip' 然后开始写语句 insert into ip.库名字.dbo.table select * from iserted

weixin_34365635的博客 1168

apollo自动驾驶进阶学习之:如何实现施工路段限速绕行及其参数调试

首先需要理解Planning模块是基于Scenario、Stage、Task这样的层次来进行的,即场景->步骤->具体的决策方法。Apollo可以应对自动驾驶所面临的不同道路场景,都是通过Scenario统一注册与管理。Scenario通过一个有限状态机来判断选择当前行车场景,每个Scenario下又有多个Stage,指当前场景下需要执行的粗略步骤。.........

qq_41593516的博客 6598

mysql之触发器

一点触发器的笔记,学习中。。。。。

zhao123ping的专栏 401

安装西门子TIA Portal V15.1提示先决条件不足如何处理?

安装TIA Portal STEP 7 Professional WinCC Professional V15.1提示先决条件不足,需要如何才能够满足安装条件呢? 1.硬件要求: 安装 STEP 7 Basic / Professional V15.1 的计算机必须至少满足以下需求: 处理器: Core i5-6440EQ 3.4 GHz 或者相当 内存: 16GB或者更多(对于大型项目,为32GB) 硬盘:SSD,配备至少50GB的存储空间 图形分辨率:最小 1920 x 1080 显示器:15.6"

Robot_PLC_HMI_Automation 2万+

解锁机器人动态平衡算法:从原理到实践

机器人的动态平衡,是指机器人在运动过程中,面对各种复杂的动态变化和外界干扰,依然能够维持稳定状态,不发生倾倒或失去控制的能力。它就像是一位技艺精湛的舞者,在舞台上翩翩起舞时,无论做出多么复杂的动作,都能巧妙地调整身体姿态,始终保持平衡,展现出优美的舞姿。在实际应用中,机器人的动态平衡对于其稳定运行起着至关重要的作用。以双足机器人为例,当它行走在不平整的地面上时,地面的起伏会使机器人的重心不断发生变化。如果没有良好的动态平衡能力,机器人就很容易因为重心偏移而摔倒,无法完成行走任务。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3838

【笔记】Oracle触发器实现当一个表的某个字段被更新为空,则报错提示

工作中又遇到这样的问题: 一张表pm_cm_payapply中的vreserve14字段,总是不知道在哪步操作中被致为空(原来的值不为空) 于是打算在表中设置一个触发器 触发器实现: 当表被更新时,判断如果vreserve14被更新为空值,则提示报错 触发器内容: CREATE OR REPLACE TRIGGER tri_vreserve AFTER UPDATE OF vreserve...

努力,学习! 5894

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT

在大模型微调中,我们一般使用Alpaca 和 ShareGPT和两种格式的数据集。

Science prince的博客 1096

MySQL数据库查看触发器和MySQL修改和删除触发器(DROP TRIGGER)

查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表等。本节将详细介绍这两种查看触发器的方法。

m0_37449634的博客 5806

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MySQL数据库——MySQL创建触发器(CREATE TRIGGER)

触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

Itmastergo的博客 7606

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MySQL创建触发器(CREATE TRIGGER)

基本语法 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <表名> FOR EACH Row<触发器主体> 语法说明如下。 1) 触发器名 触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称。 2) INSERT | UPDATE | DELETE 触发事件,用于指定激活触发器

Daturexx的博客 7982

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

用phpMyadmin给MySQL数据表创建触发器遇到的问题

今天给MySQL数据库的表创建触发器,想达到的效果

RunningCat的专栏 5540

MySQL8.0 触发器

MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序,当数据库执行了这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。介绍触发器的含义、如何创建触发器、查看触发器、触发器的使用方法以及如何删除触发器。

S_zhangmin的博客 2610

MySQL(88)MySQL创建触发器(CREATE TRIGGER)

触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

逍遥人世欢 1934

13、创建触发器(CREATE TRIGGER)

触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <表名> FOR EACH Row<触发器主体> 语

you can you up up up的博客 1万+

MySQL数据库——MySQL查看触发器

查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表等。

Itmastergo的博客 3175

mysql触发器

MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、 DELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时, 可以使用触发器来实现。

L的博客 2510

MySQL 创建触发器

触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <表名> ...

weixin_45743799的博客 1211

数据库之触发器

例如,在具体开发项目时,常会遇到如下情况,当在用户表中插入一个新用户后,用户总书必须要自动加1。就是在对表执行某项操作后,需要自动进行一些处理。此时就可以使用触发器处理数据库对象,可以创建一个触发器对象,每添加一条学生记录,就执行一次计算学生总数的操作,这样可以保证每次添加学生记录后,学生总数与学生记录数一致。

m0_73514785的博客 3225

mysql插入数据创建触发器填充uuid字段值

2、触发器基本语法 语法格式如下: 语法说明如下。触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称。触发事件,用于指定激活触发器的语句的种类。注意:三种触发器的执行时间如下。INSERT:将新行插入表时激活触发器。例如,INSERT 的 BEFORE 触发器不仅能被 MySQL 的 INSERT 语句激活,也能被 LOAD DATA 语句激活。 DELETE: 从表中删除某一行数据时激活触发器,例如 DELETE 和 REPLACE 语句

tanqingfu1的博客 1970

MySQL的SQL语句之触发器的创建和应用

触发器 Trigger。

ZHX2285的博客 1523
上一篇: C#中设置ListView的ColumnsHeader的字体大小,颜色及背景色
下一篇: C#Queue<T>队列出现弹出元素被最后一次压入得元素覆盖的问题
Micro_Ryan
博客等级 码龄12年 27粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值