触发器在 SQL 99 之后才写入 SQL 标准,但此前很多关系数据库管理系统就支持了触发器,因此不同关系数据库管理系统的触发器语法各不相同、互不兼容。
# 什么是触发器
触发器又叫事件-条件-动作规则。当特定的事件发生时,对条件进行检查,如果条件成立,则执行动作。
触发器定义在表上,当表中的数据发生变化时,将激活定义在表上的触发器。
触发器过多将会影响数据库性能,因此应该谨慎使用触发器。
# 定义触发器
create trigger 触发器名
before|after 触发事件 on 表名
referencing new|old row as 变量
for each row|statement
when 触发条件
触发动作
1
2
3
4
5
6
2
3
4
5
6
# 触发事件
before|after
是触发的事件,表示在事件之前或之后激活触发器。
触发事件可以是 insert 、delect 或 update 及其它们的组合,也可以指定修改哪些列时才激活触发器。
# 数值引用
如果是行级触发器,可以设置语句 referencing new|old row as 变量
,之后便可以用 new 或 old 来引用事件后或事件前的属性值。
# 触发器类型
通过 for each row|statement
指定触发器为行级触发器或语句级触发器。
- 行级触发器:每次触发后,每行都会执行一次
- 语句级触发器:每次触发后,只执行一次
# 触发条件
当事件发生后,触发器被激活,判断触发条件,当触发条件成立时,触发动作执行。
# 触发动作
当特定的事件发生时,对条件进行检查,如果条件成立,则执行动作。
# 删除触发器
drop trigger 触发器名 on 表名;
1