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; /