触发器在 SQL 99 之后才写入 SQL 标准,但此前很多关系数据库管理系统就支持了触发器,因此不同关系数据库管理系统的触发器语法各不相同、互不兼容。

# 什么是触发器

触发器又叫事件-条件-动作规则。当特定的事件发生时,对条件进行检查,如果条件成立,则执行动作。
触发器定义在表上,当表中的数据发生变化时,将激活定义在表上的触发器。
触发器过多将会影响数据库性能,因此应该谨慎使用触发器。

# 定义触发器

create trigger 触发器名
before|after 触发事件 on 表名
referencing new|old row as 变量
for each row|statement
when 触发条件
触发动作
1
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