mysql触发器(小记)

汽车工程师必看:从CAN到Ethernet,6种车载通信协议全解析(附应用场景对比) 本文全面解析了从CAN到Ethernet的6种车载通信协议,包括CAN、LIN、MOST、FlexRay等,并对比了它们的应用场景和技术特点。文章详细介绍了各协议的演进历程、技术优势及在现代汽车中的混合网络架构设计,为汽车工程师提供了实用的协议选型指南和未来通信技术发展趋势。 阅读详情

一、查询已有触发器:

show triggers;

二、创建触发器遇到的坑:

直接表设计–>触发器,是无法创建成功的
在这里插入图片描述

三、成功实例:

实例说明:当实例update时,计算实例相关的数值,并存入另一个表里;

DROP TRIGGER IF EXISTS `tri_update_task`;
DELIMITER $
CREATE TRIGGER `tri_update_task` AFTER UPDATE ON `crawler_task` FOR EACH ROW 
begin 
DECLARE a,b,version INT;
DECLARE label_rate DECIMAL(5,2);
SELECT version INTO version FROM task_process tp WHERE tp.task_no=new.task_no GROUP BY version ORDER BY version DESC LIMIT 1;
IF version IS NOT NULL THEN 
SELECT COUNT(*) INTO a FROM crawler_goods_info cgi WHERE cgi.task_no=new.task_no AND cgi.crawler_version = version;
SELECT COUNT(*) INTO b FROM goods_label gl WHERE gl.task_no =new.task_no AND gl.crawler_version = version AND gl.is_deleted=0;
SET label_rate = IF(a>0,(b/a)*100,0);
    INSERT INTO task_record(task_id,task_no,task_title,label_rate,version,create_time,update_time) 
VALUES(new.id,new.task_no,new.task_title,label_rate,version,NOW(),NOW()) ON DUPLICATE KEY UPDATE label_rate=label_rate,update_time=NOW();
END IF ;
end
$
DELIMITER ;
关于触发器的简介:

触发器是由mysql的基本命令事件来触发某种特定操作,这些基本命令由增,删,改操作等事件来触发某些特定操作。满足触发器的触发条件时,数据库系统就会自动执行触发器中定义的程序语句,可以令某些操作之间的一致性得到协调。

一:创建mysql触发器

在mysql中创建只有一条执行语句的触发器的形式如下。
create trigger 触发器名称 before|after 触发事件
on 表名 for each row 执行语句;
具体参数说明:
1. 触发器名—指定要创建的触发器的名称
2. 参数before|after指定触发器执行的时间,before指在触发事件之前执行触发语句,after指在触发事件之后执行触发语句。
3. 触发事件参数指定数据库操作触发条件,包括insert,update,delete
4. 表名----指触发时间操作的表
5. for each row表示任何一条记录上的操作满足触发事件都会触发该触发器。
6. 执行语句指触发器被触发后执行的语句。
例如:
创建一个触发器,当在student表中执行插入操作前,向timelog表中自动插入系统当前时间
create trigger auto_save_ime before insert on student
for each row
insert into timelog(save_time) values(now());

二:创建多条执行语句的触发器

创建语句为:
create trigger 触发器名 before|after 触发事件
on 表名 for each row
begin
执行语句
end
将要执行的多条语句放入begin…end之间,多条语句之间需要用“;”隔开。
注意:一个表在相同的时间和相同的触发事件只能创建一个触发器。

三:在行级触发器中,用:new 和:old(称为伪记录)来访问数据变更前后的值。

但要注意,INSERT语句插入一条新记录,
所以没有:old记录,而DELETE语句删除掉一条已经存在的记录,
所以没有:new记录。UPDATE语句既有:old记录,也有:new记录,分别代表修改前后的记录。

四、其他

限制和注意事项:触发器会有以下两种限制:

1.触发器不能返回数据。举个例子,begin select * from xxx end 这直接返回结果集是不行的;调用直接返回数据的存储过程或函数也是不行的。

2.不能再触发器中使用以显示或隐式方式开始或结束事务的语句,如START TRANS-ACTION,COMMIT或ROLLBACK。

注意事项:MySQL的触发器是按照BEFORE触发器、行操作、AFTER触发器的顺序执行的,其中任何一步发生错误都不会继续执行剩下的操作,如果对事务表进行的操作,如果出现错误,那么将会被回滚,如果是对非事务表进行操作,那么就无法回滚了,数据可能会出错。

总结

触发器是基于行触发的,所以删除、新增或者修改操作可能都会激活触发器,所以不要编写过于复杂的触发器,也不要增加过多的触发器,这样会对数据的插入、修改或者删除带来比较严重的影响,同时也会带来可移植性差的后果,所以在设计触发器的时候一定要有所考虑。

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。

数据库触发器有以下的作用:

1.安全性。可以基于数据库的值使用户具有操作数据库的某种权利。

a. 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。

b. 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。

2.审计。可以跟踪用户对数据库的操作。

a. 审计用户操作数据库的语句。

b. 把用户对数据库的更新写入审计表。

3.实现复杂的数据完整性规则

a. 实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的限制。与规则不同,触发器可以引用列或数据库对象。例如,触发器可回退任何企图吃进超过自己保证金的期货。

b. 提供可变的缺省值。

4.实现复杂的非标准的数据库相关完整性规则。触发器可以对数据库中相关的表进行连环更新。例如,在auths表author_code列上的删除触发器可导致相应删除在其它表中的与之匹配的行。

a. 在修改或删除时级联修改或删除其它表中的与之匹配的行。

b. 在修改或删除时把其它表中的与之匹配的行设成NULL值。

c. 在修改或删除时把其它表中的与之匹配的行级联设成缺省值。

d. 触发器能够拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。当插入一个与其主健不匹配的外部键时,这种触发器会起作用。例如,可以在books.author_code 列上生成一个插入触发器,如果新值与auths.author_code列中的某值不匹配时,插入被回退。

5.同步实时地复制表中的数据。

6.自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。例如,如果公司的帐号上的资金低于5万元则立即给财务人员发送警告数据。

Arduino与Proteus仿真实例-HG7881(L9110)驱动直流电机仿真 HG7881(L9110)驱动直流电机仿真 HG7881 (L9110) 双通道电机驱动器模块。 HG7881 (L9110) 是一款紧凑型电机驱动芯片,支持 2.5-12V 电压范围,800mA 连续电流。 这些芯片具有内置输出钳位二极管以保护敏感的微控制器电子设备。 它们适用于非常小的机器人项目。 每个 HG7881 (L9110) 芯片都能够使用两个数字控制输入驱动单个直流电机。 一个输入用于选择电机方向,而另一个用于控制电机速度。 速度是通过使用 PWM 脉冲宽度调制来控制的。 电机驱动器通常具有 阅读详情

相关推荐

深入解析SGLang框架:从架构设计到核心组件实现

本文深入解析了SGLang框架的架构设计与核心组件实现。SGLang是一个专为大语言模型推理设计的高效框架,其核心优势在于清晰的分层架构、高效的调度策略以及精细的内存管理。文章详细剖析了其客户端接入、服务器端调度、模型执行引擎及Tokenizer/Detokenizer管理器等关键组件,揭示了其实现高性能推理的内部机制。

coffee的博客 577

Mysql数据库中的触发器(Triggers)详解,定义、原理及其应用实例

数据库的触发器(Triggers)是数据库管理系统(DBMS)中的功能,它允许用户定义在指定表上的某些操作(如 INSERT、UPDATE 或 DELETE)发生之前或之后自动执行的 SQL 语句或语句集。触发器是与表事件(表的INSERT、UPDATE、DELETE操作)相关联的命名数据库对象。在指定表上发生特定事件时,触发器会自动激活,执行相应的 SQL 语句。触发器包含复杂 SQL 语句,这语句可以执行数据验证、更新其他表、发送电子邮件。场景包括数据验证、数据审计、数据完整性、自动计算字段、日志记录。

weixin_70208651的博客 5747

【08】C#实战篇——C#调用C++ 动态库dll,报错 “无法加载DLL“xxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”

摘要: 本文详细分析了C#调用C++封装的DLL时出现“无法加载DLL”错误的排查与解决方法。通过案例演示,列举了常见原因(如平台不匹配、路径错误、依赖缺失等),并重点介绍了使用VS的dumpbin工具检测DLL依赖项的方法。最终定位问题为缺失依赖的LineApi.dll和opencv_world455d.dll,将其放入C#的exe目录后解决。文章还对比了C++与C#的报错差异,提供了通用解决方案,包括检查运行时库、环境变量等,帮助开发者高效解决类似问题。 关键词: C#调用C++ DLL、dumpbin

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2099

MySQL_08_触发器

MySQL对表中数据执行特定操作后自动执行的函数

爱喝可乐的w 7124

catia之车灯设计——灯玻加厚之后(单层灯玻、多层灯玻的设计)

加厚完A面后如果主机厂没有给其他的面我们该怎么做?

qq_19829077的博客 1305

《玩儿起来吧》MATLAB 实时图像处理系列(一二三四)

大家学了图像处理之后,是不是就想学以致用。而要用于生活中,最好的方式就是和摄像头搭配,实现实时图像处理。今天就给大家分享MATLAB实时图像处理的基础方法,希望能帮你快速入门。

HPC_ZY 1万+

MySQL(加强)06 -- 触发器(Trigger)

MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一

shunchang的专栏 208

Spyglass实战指南:跨时钟域同步方案深度解析

本文深度解析了Spyglass在跨时钟域同步方案验证中的实战应用。通过真实案例阐述了亚稳态的危害,并详细介绍了从基础的两级同步器到复杂的异步FIFO与握手协议等八大同步方案,以及如何利用Spyglass进行有效配置、检查与问题排查,为提升芯片设计可靠性提供系统性的避坑指南。

weixin_29219189的博客 840

MySQL之触发器详解加实战

触发器概述 触发器的执行不是由程序调用,也不是手动开启,而是由时间来触发。当对某个表进行操作时会自动激活并执行触发器,例如对一个表进行INSERT、DELETE、UPDATE等操作时会激活并执行触发器。 触发器类似于约束,但是比约束灵活,具有更强的数据控制能力。 触发器的优点如下: 1、自动执行:触发器在操作数据时立即被激活。 2、级联更新:触发器可以通过数据库中的相关表进行层叠更改。 3、强化约束:触发器可以引用其他表中的列,能够实现比CHECK约束更复杂的约束。 4、跟踪变化:触发器可以阻止数据库中未经

weixin_40548182的博客 2196

Far planner代码系列(2)

graph_decoder系列(2) 承接上文 我们接着来看decoder_node.cpp的代码部分 void GraphDecoder::Init() { /* initialize subscriber and publisher */ //graph_sub_ 订阅节点/robot_vgraph 其类型是visibility_graph_msg/Graph的消息 graph_sub_ = nh.subscribe("/robot_vgrap...

博客 1534

车牌识别系统

随这图形图像技术的发展,现在的车牌识别技术准确率越来越高,识别速度越来越快。无论何种形式的车牌识别系统,它们都是由触发、图像采集、图像识别模块、辅助光源和通信模块组成的。车牌识别系统涉及光学、电器、电子控制、数字图像处理、计算视觉、人工智能等多项技术。触发模块负责在车辆到达合适位置时,给出触发信号,控制抓拍。辅助光源提供辅助照明,保证系统在不同的光照条件下都能拍摄到高质量的图像。图像预处理程序对抓拍的图像进行处理,去除噪声,并进行参数调整。然后通过车牌定位、字符识别,最后将识别结果输出。 牌照自动识别是一

FPGA/MATLAB学习教程/源码/项目合作开发 2万+

mysql触发器trigger 实例详解

MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器...

weixin_33872566的博客 861

顶级AI大模型白嫖ChatGPT Plus1个月,0成本薅顶配功能

Chat*** Plus限时免费1个月!原价20美元/月的顶配功能

BUG猿的博客 7285

mysql触发器学习小记

1、作用 监视某种操作并触发某种操作。即监视某表的变化,当发生某变化时,触发某个操作。 2、触发器能监视的操作:增、删、改 3、触发器能触发的操作:增、删、改 4、语法 (1)创建触发器 delimiter $ #此行结尾不要加;,否则结束符号为$; 而不是$ create trigger 触发器名称 before/after insert/update/delete on 表名 f...

yixu0534的博客 278

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MySQL触发器小记一点

今天业务需求建一个触发器,但是报错: ERROR 1235 (42000) at line 30: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 经过测试,发现是因为在这个表上已经存在了一个触发器(不同名),因此在

315

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql 触发器 游标_SQL SERVER触发器游标小记

SQL SERVER触发器游标小记 今天接到个需求用触发器来实现通过条件对其他表的更新。好久没摸SQL SERVER,电脑里也没SQL SERVER安装包,同事遂发来个安装包,一看吓一跳,3.6G!!!!经过漫长等待后,开始作业。需求如下 1、 当a字段更新为2或者3,并且b字段更SQL SERVER触发器游标小记今天接到个需求用触发器来实现通过条件对其他表的更新。好久没摸SQL SERVER,电...

weixin_30470785的博客 176

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MySQL小记——存储过程、触发器、函数、视图

有结构(有行有列),但没有结果(结构中不真实存储数据)的虚拟的表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图数据的来源)(2)数据安全,视图操作注意是针对查询语句的,如果对视图结构进行处理(比如删除),不会影响基表的数据.(4)视图对外可以提供友好的数据:不同的视图提供不同的数据,对外提供的数据好像是经过专门设计的一样.7.视图数据的操作:视图是可以进行数据操作的(比如 增,删,改,视图中的数据),但是有很多限制。(3)视图是可以向基表中插入数据的 (视图的操作是影响基表的)

m0_63138660的博客 761

【实战篇】Mysql 日常小记

1、第一条,可执行有个弊端,不灵活,需要写很多表进去2、触发器中使用动态 sql,不可用,会报错。

沉梦听雨的博客 1005

用mysql触发器自动更新memcache

用mysql触发器自动更新memcache

可克技术 1134

mysql 工作小记

MySQL 工作小记 申明:用于日常工作中经常用到的东西,记录一下便于查询 1、查询一个库中最大的5张表 SELECTconcat(table_schema,'.',table_name)table_name,concat(round(data_length/(1024*1024),2),'M')data_lengthFROMinformation_sche...

weixin_33704591的博客 81

mysql udf http,mysql下mysql-udf-http效率测试小记

看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机复制代码代码如下:[root@localhost ~]# uname -aLinux sunss 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux内存和交换分区:复制代码代码如下:...

weixin_30863465的博客 347

ubantu下安装mysql小记

下载最新的mysql二进制版本,查看包下的文件[root@my-desktop]# tar -tvf MySQL-5.5.10-1.linux2.6.i386.tar解压[root@my-desktop]# tar -xvf MySQL-5.5.10-1.linux2.6.i386.tarMySQL-clientr-5.5.10-1.linux2.6.i386.rpmMySQL-devel-5.5...

vieri124 770

mysql udf 性能_mysql下mysql-udf-http效率测试小记

看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机复制代码 代码如下:[root@localhost ~]# uname -aLinux sunss 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux内存和交换分区:复制代码 代码如...

weixin_39555179的博客 174

mysql udf http_mysql的mysql-udf-http效率测试小记

看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机[root@localhost ~]#uname -aLinux sunss2.6.18-128.el5#1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux内存和交换分区:[root@localhost ~]#fr...

weixin_34216614的博客 182

mysql 5.7 udf http_mysql下mysql-udf-http效率测试小记

看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机复制代码 代码如下:[root@localhost ~]# uname -aLinux sunss 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux内存和交换分区:复制代码 代码如...

weixin_30899789的博客 183

MySQL小记2

如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。

weixin_54828688的博客 164
上一篇: Eureka系统学习笔记(一)
下一篇: linux redis管理----状态查看和重启
hacker_LeeFei
博客等级 码龄10年 1168粉丝 264原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值