数据库 ·

网易MySQL微专业学习笔记(七)-触发器与存储过程

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。

所有笔记可能不定期更新,发布时不一定为最终版。

正文

触发器:

是什么?
触发器是加载表上的一个特殊程序,当表上出现特定的事件(insert/update/delete)时触发该程序执行。
做什么?
数据订正;迁移表;实现特定的业务逻辑。
触发器对性能有损耗,应慎重使用。
同一类事件在一个表中只能创建一次。
对于事务表,触发器执行失败则整个语句回滚。
Row格式主从复制,触发器不会在从库上执行。
使用触发器应防止递归执行,mysql中会直接创建失败,如:
create trigger trg_upd_score
before update on 'stu'
from each row begin
update stu set score = 20
where name = old.name
end;

存储过程

定义:
存储过程是存储在数据库端的一组sql语句集,用户可以通过存储过程名和传参多次调用的程序模块。
特点:
使用灵活,可以使用流控制语句、自定义变量等完成负责的业务逻辑。
提高数据哦就性,屏蔽应用程序直接对表的操作,易于进行审计。
减少网络传输。
提高代码维护的复杂度,实际使用中要评估场景是否适合。

自定义函数

与存储过程类似,但必须有返回值(return)
自定义函数与sum(),max()等mysql原生函数使用方法类似:
select func(val)
select * from tbl where col = func(val);
由于自定义函数可能在便利数据中使用,要注意性能损耗。
select uid from user

参与评论