SQL 触发器

触发器是用户定义的由事件驱动的特殊过程,满足条件则触发,并执行相应动作。

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

一、什么是触发器

触发器又叫事件-条件-动作规则。当特定的事件发生时,对条件进行检查,如果条件成立,则执行动作。

触发器定义在表上,当表中的数据发生变化时,将激活定义在表上的触发器。

触发器过多将会影响数据库性能,因此应该谨慎使用触发器。

二、定义触发器

1
2
3
4
5
6
create trigger 触发器名
before|after 触发事件 on 表名
referencing new|old row as 变量
for each row|statement
when 触发条件
触发动作

1.触发事件

before|after 是触发的事件,表示在事件之前或之后激活触发器。

触发事件可以是 insert 、delect 或 update 及其它们的组合,也可以指定修改哪些列时才激活触发器。

2.数值引用

如果是行级触发器,可以设置语句 referencing new|old row as 变量 ,之后便可以用 new 或 old 来引用事件后或事件前的属性值。

3.触发器类型

通过 for each row|statement 指定触发器为行级触发器或语句级触发器。

  • 行级触发器:每次触发后,每行都会执行一次
  • 语句级触发器:每次触发后,只执行一次

4.触发条件

当事件发生后,触发器被激活,判断触发条件,当触发条件成立时,触发动作执行。

5.触发动作

当特定的事件发生时,对条件进行检查,如果条件成立,则执行动作。

三、删除触发器

1
drop trigger 触发器名 on 表名;

参考

  • 数据库系统概论