5.3 触发器 5.3.1 对触发器的需求

5.3 触发器

触发器( trigger)是一条语句,当对数据库作修改时,它自动被系统执行。要设置触发器机制,必须满足两个要求:

  1. 指明什么条件下执行触发器。它被分解为一个引起触发器被检测的事件和一个触发器执行必须满足的条件
  2. 指明触发器执行时的动作。

一旦我们把一个触发器输入数据库,只要指定的事件发生,相应的条件满足,数据库系统就有责任去执行它。

5.3.1 对触发器的需求

实现完整性约束

触发器可以用来实现未被SQL约束机制指定的某些完整性约束

自动执行任务

它还是一种非常有用的机制,用来当满足特定条件时对用户发警报或自动开始执行某项任务

自动计算总学分

例如,我们可以设计一个触发器,只要有元组被插入takes关系中,就更新student关系中选课的学生所对应的元组,把该课的学分加入这个学生的总学分中。

自动库存补充

作为另一个应用触发器的例子,假设一个仓库希望每种物品的库存保持一个最小量;当某种物品的库存少于最小值的时候,自动发出一个订货单。在更新某种物品的库存的时候,触发器会比较这种物品的当前库存和它的最小库存,如果库存数量等于或小于最小值,就会生成一个新的订单。

注意,触发器系统通常不能执行数据库以外的更新,因此,在上面的库存补充的例子中,我们不能用一个触发器去直接在外部世界下订单,而是在存放订单的关系中添加一个关系记录。我们必须另外创建一个持久运行的系统进程来周期性扫描该关系并订购产品。

某些数据库系统提供了内置的支持,可以使用上述方法从SQL查询和触发器中发送电子邮件。