首页 > 代码库 > oracle 触发器

oracle 触发器

数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。


触发器可用于
  数据确认 
  实施复杂的安全性检查
  做审计,跟踪表上所做的数据操作等
  数据的备份和同步

触发器的类型
  语句级触发器
    在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 。
  行级触发器(FOR EACH ROW)
    触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。

语法:

CREATE  [or REPLACE] TRIGGER  触发器名
   {BEFORE | AFTER}
   {DELETE | INSERT | UPDATE [OF 列名]}
   ON  表名
   [FOR EACH ROW [WHEN(条件) ] ]
   PLSQL 块
    [FOR EACH ROW [WHEN(条件) ] ]-----行级触发器


触发语句与伪记录变量的值

技术分享

 1 --不能在非工作时间插入数据 2 create or replace trigger SecrityEmp 3 before insert 4 on testemp 5 begin 6   if to_char(sysdate,day) in (星期六,星期天) 7   or to_number(to_char(sysdate,hh24)) not between 9 and 18  8   then 9   raise_application_error(-20000,不能在非工作时间插入数据);    10   end if;11 end;12 13 --涨后工资不能小于涨前工资14 create or replace trigger checksal15 before update16 on testemp17 for each row18 begin19   if :old.sal>:new.sal then20   raise_application_error(-20001,涨工资不能小于之前的工资);21   end if;22 end;

 

oracle 触发器