数据库··By/蜜汁炒酸奶

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

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。 所有笔记可能不定期更新,发布时不一定为最终版。 netease_mysql_feng.png

正文

触发器:

是什么?

触发器是加载表上的一个特殊程序,当表上出现特定的事件(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

Preview
Loading comments...
0 条评论

No Data

example
Preview