欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql触发器,游标

程序员文章站 2022-06-04 08:09:48
...

整篇文章为个人学习心得,之后会持续发表mysql高级进阶,javaweb框架等知识点文章,制作不易,加个关注
触发器:
是和表关联的特殊的存储过程,可以再插入,删除,修改表中的数据时触发执行
优点:
安全性,审计(可以跟踪用户对数据的操作),实现复杂的数据完整性规则,提供了运行计划任务的另一种方法。
缺点:
消耗资源,对频繁增删改的表请勿使用。
特性:
针对每一行执行,附着在表上,有begin end体;
四要素:
监控地点:table
监控事件:insert/update/delete
触发时间:after/before
触发事件:insert/update/delete
触发器新旧记录:
MySQL 中定义了 NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据。
New:只读,不可修改
Old:可以在触发器中使用 SET 赋值
Insert型触发器中:new表示将要或已经插入的新数据
Update型触发器中:new表示将要或已经修改的新数据,old表示原数据
Delete型触发器中:old表示将要或已经删除的原数据

-- 对表mytable创建触发器
create trigger mytg after insert--after,insert均为前边提到的四要素出发时间,监控事件,不了解的可以去上面看看
on mytable for each row
begin
		--此代码块填写相应触发的操作
end;


-- 删除名为mytg的触发器
drop trigger mytg;
-- 查看触发器基本信息
show triggers;
-- 查看触发器信息,触发器信息都存储在information_schema数据库下的triggers表中
select * from information_schema.triggers;

mysql游标:
是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作
*会把数据记录到内存中,影响性能,不建议使用,尽可能避免在打开的游标的表上做数据更新 *
特征:
只读,不可更新,不可滚动,敏感,
游标的分类:
敏感游标:比不敏感游标执行的更快,不需要临时拷贝数据。但对其他连接的数据所做的任何更改都将影响由敏感游标使用的数据,因此,如果不更新敏感游标所使用的数据,则更安全。
不敏感游标:使用数据的临时副本
Mysql创建游标的四个部分:

-- 定义游标
declare 游标名 cursor for select sql语句
-- 打开游标
open 游标名
-- 获取结果,配合循环使用,循环遍历结果
fetch 游标名 into 变量名
-- 关闭游标
close 游标名

使用游标的时候会用到的一个语法:

-- 定义一个int类型的变量
declare flag int default 0;
-- 若没有数据返回了,程序继续并将变量flag的值改为1;
declare continue handler for not found set flag=1;