触发器在数据库里以独立的对象存储,它与存储过程不一样的是,存储过程经过其它程序来启动运行,而触发器是由一个事件来启动运行。sql
1. 触发器特性数据库
1>触发器是当某个事件发生时自动的运行。
oracle
2>触发器不能接收参数。code
3>oracle事件指的是对数据库表进行的insert、update、delete等操做。对象
2. 触发器组成
事件
2.1 触发事件:引发触发器被触发的事件。例如:insert、update、delete等语句对表或视图的操做。class
2.2 触发时间:即该trigger是在触发事件发生以前仍是以后触发。date
2.3 触发操做:即该trigger被触发以后的目的和意图,就是触发器自己要作的事情。
程序
2.4 触发对象:包括表、视图、模式、数据库等,只有在这些对象上发生了符合触发条件的触发事件,才会执行触发操做。im
2.5 触发条件:由when子句指定一个逻辑表达式,只有当该表达式的值为true时,遇到触发事件才会自动执行触发器,使其执行触发操做。
2.6 触发频率:说明触发器内定义的动做被执行的次数。即语句级触发器(statement)和行级(row)触发器。
语句级触发器:当某触发事件发生时,该触发器只执行一次。
行级触发器:当某触发事件发生时,对受到该操做影响的每一行数据,触发器都单独执行一次。
3. 建立触发器实例
create or replace trigger demo before insert on t_user declare -- local variables here begin dbms_output.put_line('该触发器已被执行!'); end demo;
向t_user表中添加数据
insert into t_user (user_id, user_name, gender, age, telephone) values (5, '王老吉', '0', 10, '13269368569')
查看触发器是否被执行