分类: Oracle
2008-04-02 23:54:17
来源:赛迪网 作者:limeinan |
一个触发器有三个基本部件:触发事件或语句、触发器的限制、触发器动作。
触发事件或语句:为引起触发器激发的SQL语句,是对指定表INSERT、UPDATE或DELETE语句。
触发器限制:为一布尔表达式,当触发器激发时该条件必须为TRUE。触发器的限制是用WHEN子句来指定。
触发器的动作:为一个PL/SQL块(过程),由SQL语句和PL/SQL语句组成。当触发语句发出,触发器的限制计算得TRUE时,它被执行。在触发器动作的语句中,可使用触发器的处理的当前行的列值(新值、老值),使用形式为:
NEW.列名 引用新值
OLE.列名 引用老值
在定义触发器时可指定触发器动作执行次数:受触发语句影响每一行执行一次或是对触发语句执行一次。
对每一触发语句可有四种类型触发器:
行触发器:对受触发语句所影响的每一行,行触发器激发一次。
语句触发器:该类型触发器对触发语句执行一次,不管其受影响行数。
定义触发器可以指定触发时间,指定激发器动作的执行相对于触发语句执行之后或之前。
BEFORE触发器:该触发器执行触发器动作是在触发语句执行之前。
AFTER触发器:该触发器执行触发器动作是在触发语句执行之后。
一个触发器可处于两种不同的方式:使能触发器和使不能触发器。
使能触发器:只要当触发语句发出,触发器限制计算为TRUE,这种类型的触发器执行其触发动作。
使不能触发器:这种触发器即使其触发语句被发出,触发器限制计算为TRUE,也不执行触发器动作。
触发器的源代码存储在数据库中,在第一次执行时,触发器的源代码被编译,存储在共享池中。如果触发器从共享池中挤了,再使用时必须再重新编译。 |