Oracle触发器的入门例子

发布时间:2020-09-24编辑:脚本学堂
本文介绍下,有关oracle数据库中触发器的小例子,学习下oracle中创建与使用触发器的方法,有需要的朋友不妨参考下。

本节主要内容:
oracle触发器

1, 概念
    触发器 是特定事件出现时,自动执行的代码块。
    类似于存储过程,但是用户不能直接调用他们。

2, 例子
(1) 准备
 

复制代码 代码示例:
create tabel emp2 as select * from emp; 
-- 谁 做了什么操作 在什么时间 
create table emp2_log 

    uname varchar2(20), 
    action varchar2(10), 
    atime date 
);

(2) 创建
 

复制代码 代码示例:
create or replace trigger trig 
    after insert or delete or update    -- 执行的时机 
    on emp2                             -- 操作emp2时 
    for each row                        -- 每一行数据的更改, 都触发 
declare 
    v_action emp2_log.action%type; 
begin 
    if inserting then 
        v_action := 'insert'; 
    elsif updating then 
        v_action := 'update'; 
    elsif deleting then 
        v_action := 'delete'; 
    end if; 
   
    insert into emp2_log values(USER, v_action, sysdate); 
end; 

(3) 测试

3, 更新被参考的字段的值
(1) 引出
 

复制代码 代码示例:
SQL> update dept set deptno = 99 where deptno = 10; 
ORA-02292: 违反完整约束条件 (SCOTT.FK_DEPTNO) - 已找到子记录 

(2) 创建触发器
 

复制代码 代码示例:
drop trigger trig; 
create or replace trigger trig 
    after update on dept 
    for each row 
begin 
    update emp set deptno = :NEW.deptno where deptno = :OLD.deptno;  
end; 

(3) 更新 dept
成功

(4) 回滚