当前位置:首页 > 数据库 > 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 4on testemp
 5begin 6if to_char(sysdate,day) in (星期六,星期天)
 7or to_number(to_char(sysdate,hh24)) notbetween9and18 8then 9   raise_application_error(-20000,不能在非工作时间插入数据);    
10endif;
11end;
1213--涨后工资不能小于涨前工资14createorreplacetrigger checksal
15 before update16on testemp
17for each row
18begin19if :old.sal>:new.sal then20   raise_application_error(-20001,涨工资不能小于之前的工资);
21endif;
22end;

 

原文:http://www.cnblogs.com/liuwt365/p/4192518.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!