|程序员应知应会之数据库中的触发器

文章图片
一、触发器的概念
【|程序员应知应会之数据库中的触发器】触发器是与表有关的数据库对象 , 在满足预定义的条件时会被触发 , 从而执行触发器中定义的语句集合 。
二、触发器什么时候会被触发
在数据库进行数据变更的时候 , 触发器可以被触发 。 即对数据表进行插入、删除、修改数据的时候 , 可以执行触发器 。 触发器定义在表上 , 也依附于表存在 。 触发器可以在数据表变更进行前执行 , 也可能在变更进行后执行 。 触发器对于每一行都会被执行 。
三、触发器的作用
1、安全性:触发器能够基于数据库的值使用户具有操作数据库的权限 , 也可以基于时间等因素限制用户的操作 , 比如不在节假日修改数据 , 或者不允许股票一次涨跌超过10% 。
2、审计功能:触发器能够跟踪用户对于数据库的每个操作 , 并且把用户对于数据的操作写入审计表 。 对于某些重要 , 而且数据不会被大量操作的系统来讲 , 是一个非常有意义的功能 。
3、数据完整性:可以实现数据库本身无法提供的 , 非标准的数据完整性检查和约束 , 触发器能够引用列或数据库对象 。 或者提供基于其它字段的 , 可变的默认值 。
四、MySQL中如何创建触发器
MySQL从5.0.1版本开始提供触发器功能 , MySQL中创建触发器的语句如下:
创建单行执行语句的触发器:
create trigger 触发器名 before|after 触发条件
on 表名 for each row
执行语句;
创建多行执行语句的触发器:
create trigger 触发器名 before|after 触发条件
on 表名 for each row
begin
执行语句;
end;
在触发器中 , 有系统变量NEW和OLD , 分别代表触发了触发器的那一行数据的旧值和新值 。 例如
create trigger trigger_test2 after insert
on user for each row
insert into user_logs
values(now()concat('有新用户添加新用户为:'NEW.username));
五、触发器的缺点
如果批量插入数据 , 比如说插入500条数据 , 那么就需要触发500次触发器 , 大大增加了系统开销 。 尤其是如果触发器中进行了大量的操作的话 , 系统的效率就会非常低下 。 因此 , 应减少触发器的使用 , 以减少系统资源的消耗 。 对于修改非常频繁地表上 , 不要使用触发器 。 尤其对于用户体验非常重视的互联网公司 , 通常都是禁止在数据库中使用触发器的 。
喜欢本文的话 , 欢迎关注活在信息时代哦:)
- 程序员|程序员的口味变了!C++首次逆袭JAVA:跻身最受欢迎编程语言TOP3
- 小米13|数影周报:程序员离职后锁公司硬盘;“交个朋友”成立淘宝事业部
- 靠玩ChatGPT|0行代码拿210万年薪程序员新工作纯靠和ai聊天
- 程序员|0行代码拿210万年薪 程序员新工作纯靠和AI聊天
- 程序员|偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历
- 偶然当程序员却拿下图灵奖,超算榜单之父讲述人生开挂经历
- 乐学圆梦:30岁转行做程序员,该从哪方面入手?
- 好学编程:作为程序员,赚取额外收入的 4个简单副业!
- 程序员|某乎上出现了一个画风清奇的问题:“国家何时整治程序员的高薪现象?”
- 程序员|程序员培训机构哪家好?程序员培训机构前十排行榜—课程篇
