简答题 7.  触发器的作用、优缺点有哪些?
【正确答案】触发器(TRIGGER)是数据库提供给程序员和DBA用来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,是用户定义在表上的一类由事件驱动的特殊过程。触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发的,其中,事件是指用户对表的增(INSERT)、删(DELETE)、改(即更新UPDATE)等操作。触发器经常被用于加强数据的完整性约束和业务规则等。
   触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,而是由一个事件来触发运行,即触发器是当某个事件发生时自动地隐式运行。
   具体而言,触发器有如下作用:
   1)可维护数据库的安全性、一致性和完整性。
   2)可在写入数据表前,强制检验或转换数据。
   3)当触发器发生错误时,异常的结果会被撤销。
   4)部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器,还可以针对视图定义替代触发器(INSTEAD OF)。
   触发器的优点:触发器可通过数据库中的相关表实现级联更改。从约束的角度而言,触发器可以定义比CHECK更为复杂的约束。与CHECK约束不同的是,触发器可以引用其他表中的列。例如,触发器可以使用另一个表中的数据来比较更新的数据以及执行其他操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表的状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE或DELETE)允许采取多个不同的对策以响应同一个修改语句。
   当然,虽然触发器功能强大,可以轻松可靠地实现许多复杂的功能,但是它也具有一些缺点,滥用会造成数据库及应用程序的维护困难。在数据库操作中,可以通过关系、触发器、存储过程、应用程序等来实现数据操作。同时,规则、约束、默认值也是保证数据完整性的重要保障。如果对触发器过分地依赖,那么势必会影响数据库的结构,同时增加了维护的复杂性。
   对于触发器,需要特别注意以下几点:
   1)触发器在数据库里以独立的对象存储。
   2)存储过程通过其他程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。
   3)触发器被事件触发。运行触发器称为触发或点火(FIRING),用户不能直接调用触发器。
   4)触发器不能接收参数。
【答案解析】