Oracle 触发器

转自慕课网:http://www.imooc.com/video/8744
触发器的定义
每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动的执行触发器中定义的语句序列
(select语句没有触发器)

 

在emp 表中插入到一条语句的时候触发一个触发器,触发器打印一句话”成功插入新员工

Create trigger saynewemp //创建一个名为saynewemp的触发器
after insert //在insert语句执行完之后执行该触发器
on emp //该触发器作用在那个表上
declare//程序中是否需要使用变量,不需要时省略
begin
dbms_output.put_line('成功插入新员工')
end;
/

类似Java中的监听器


应用场景
1 复杂的安全性检查
2 数据的确认
3 数据库审计 //跟踪数据库中的数据的操作记录
4 数据的备份和同步


触发器类型
1 语句级的触发器(没有for each row 语句则表示是语句级的触发器)
在指定的操作之前或之后执行一次,不管这条语句影响了多少行


2 行级触发器
触发语句作用的每一条记录都被触发.在行级触发器中使用 :old 和 :new 伪记录变量,识别值的状态

语句级的触发器针对的是表
行级触发器针对的是行

insert into emp10 select * from emp where deptno = 10;//将emp表中deptno=10的员工插入到emp10表中(假设可以查出三条记录)
如果是语句触发器则上条SQL会出发一次触发器
而行级触发器会被触发三次



语法 []可有可无
create [or replace] trigger 触发器名称 //创建一个触发器
{before | after}
{delete|insert|update[of 列名]}//update后跟列名表示只有update某一列时才会触发触发器
on 表名
[for each row[when(条件)]]
plsql 块

 

 

 

 

 

 

 

posted @ 2017-07-02 17:40  wdmiye  阅读(350)  评论(0编辑  收藏  举报