Oracle触发器

1.什么是触发器?

  首先触发器是一个特殊的存储过程。是一个与表相关联的,存储的pl/sql程序。每当一个数据操作语句(insert delete update)在指定表上执行时,Oracle数据库就会来执行触发器中定义的语句序列。

2.触发器的应用场景?

  a.进行复杂的安全检查

  b.进行数据的确认

  c.实现审计的功能

  d.数据的备份和同步

3.触发器的基本语法。

  

create trigger sayNewEmp--创建触发器sayNewEmp
after insert--执行DML insert操作
on emp--在员工表中
declare
begin
dbms_output.put_line('成功插入操作新员工');--打印
end;
/

 3.语句级和行级操作的区别

  语句级不管这条语句有多少行,触发器的命令会在语句的执行的前后执行。

  行级触发就是针对于表的行或者某一行when

insert into emp select * from emp1 when empno = 10;--多条插入

  那么这里的当行级操作时,每插入一行就会执行这个触发器。

4.进行复杂的安全检查(以判断时间为例)

create or replace trigger securityEmp
before insert
on emp
begin 
if 
to_char(sysdate,'day')in('星期六','星期日') or
to_number(to_char(sysdate,'hh24'))not between 9 and 18 then raise_application_error(-20001,'禁止非工作时间插入新员工');
end if;
end;
/

5.进行数据的确认(确认涨的工资是正值)

create or replace trigger checkEmp
before update
on emp
for each row--行级操作
begin 
if :new sal<:old sal then then   --:new 表示update后
raise_application_error(-20002,'涨的工资非正值');
end if;
end;
/

 

posted @ 2017-02-13 16:50  冰镇矿泉水  阅读(114)  评论(0编辑  收藏  举报