码迷,mamicode.com
首页 > 数据库 > 详细

oracle 触发器

时间:2014-12-29 22:50:45      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

数据库触发器是一个与表相关联的、存储的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 checksal
15 before update
16 on testemp
17 for each row
18 begin
19   if :old.sal>:new.sal then
20   raise_application_error(-20001,涨工资不能小于之前的工资);
21   end if;
22 end;

 

oracle 触发器

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!