5.3.2 SQL中的触发器
5.3.2 SQL中的触发器
现在我们来看如何在SQL
中实现触发器。我们在这里介绍的是SQL
标准定义的语法,但是大部分数据库实现的是非标准版本的语法。尽管这里所述的语法可能不被这些系统支持,但是我们阐述的概念对于不同的实现方法都是适用的。我们将在本章末尾讨论非标准的触发器实现。
图5-8展示了如何使用触发器来确保关系section
中属性time_sotd
的参照完整性。
1 | -- 在插入时启动触发器 |
图中第一个触发器的定义指明该触发器在任何一次对关系section
的插入操作执行之后被启动,以确保所插入元组的time slot id
字段是合法的。一个SQL
插人语句可以向关系中插入多个元组,在触发器代码中的foreach row
语句可以显式地在每一个被插入的行上进行迭代。 referencing new row as
语句建立了一个变量mo
(称为过渡变量transition variable
),用来在插入完成后存储所插入行的值。
这里省略大部分,有空再补上.
非标准的触发器语法
使触发器无效
触发器可以设为有效或者无效:默认情况下它们在创建时是有效的,但是可以通过使用alter trigger trigger_name disable
(某些数据库使用另一种语法,比如disable trigger trigger_name
)将其设为无效。
设为无效的触发器可以重新设为有效。
删除触发器
通过使用命令drop trigger trigger_name
,触发器也可以被丢弃,即将其永久移除。