`
gaogengzhi
  • 浏览: 106141 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle数据库触发器小结

阅读更多
         前段时间公司用到[/size]Oracle触发器,使数据库中两张表数据同步。由于自己没有接触过Oracle触发器,在网上找了些资料,闲来无事,对Oracle触发器知识做一个简单的梳理。
         触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
        下面看一个触发器的简单例子:
create trigger biufer_employees_department_id 
    before insert 
    or delete
    or update of department_id  
    on employees 
    referencing old as old_value 
                new as new_value 
    for each row 
    when (new_value.department_id<>80 ) 
begin 
  :new_value.commission_pct :=0; 
end; 

触发器的组成部分:
1、 触发器名称
2、 触发语句
3、 触发器限制
4、 触发操作

一、 触发器名称
create trigger biufer_employees_department_id 

命名习惯:
biufer(before insert update for each row)
或 buid(befer insert update delete)
employees 表名
department_id 列名

二、 触发语句
比如: 表或视图上的DML语句或DDL语句
数据库关闭或启动,startup shutdown 等等
 
    before insert 
    or delete
    or update of department_id  
    on employees 
    referencing old as old_value 
                new as new_value 
    for each row 

说明:
a、对employees表进行insert的时候
b、对employees表的department_id列进行update的时候
c、对employees表进行delete的时候
d、其中的new_value是代表更新之后的值。

三、 触发器限制
when (new_value.department_id<>80 )
限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。

四、 触发操作
触发操作是触发器的主体
begin 
       :new_value.commission_pct :=0; 
end; 

主体很简单,就是将更新后的commission_pct列置为0。
主体可为任意的pl/sql_block

[试验1]

1、 简历试验表:
create table Eic_mend_copy as select *from Eic_mend; 

2、 建立日志表
create table employees_log( user_name varchar2(30), time date); 

3、 建立触发器:
 
Create or replace trigger biud_Eic_mend_copy 
    after insert or update or delete 
    on Eic_Mend_copy 
Begin 
    Insert into Eic_mend_log(user_name,time) 
    values( user, sysdate); 
end; 

4、 测试数据
 
insert into Eic_Mend_copy(mendid,mendname) values(110,'武警'); 

[试验2]

1、 修改日志表
 
alter table Eic_mend_log add (action varchar2(20)); 

2、 修改触发器,以便记录用户操作语句类型。
create or replace trigger biud_eic_mend 
    after insert or update or delete 
    on eic_mend_copy 
    declare 
    l_action eic_mend_log.useraction%type; 
    
Begin 
    if inserting then 
      l_action:='Insert';
    elsif updating then 
      l_action:='Update'; 
    elsif deleting then 
      l_action:='Delete'; 
    else  raise_application_error(-20001,'You should never ever get this error.'); 
    
    end if;
    insert into eic_mend_log(name,time,useraction) 
    values( user,sysdate, l_action);
End;

3、 测试
 
insert into Eic_mend_copy( mendid, mendname, sex) 
values(12345,'laoli','男'); 
update Eic_mend_copy set mendname='pretty' where mendid=12345; 
delete from eic_mend_copy where mendid=110; 

4、 测试结果:
 
select * from Eic_mend_log; 

YJZX 03-11月-08 Insert 
YJZX 03-11月-08 Update 
YJZX 03-11月-08 Delete 



分享到:
评论

相关推荐

    数据库 ORACLE_8_初学者指南2

    2.2.4 数据库触发器 2.2.5 可扩充性 2.2.6 继承 2.2.7 多态 2.2.8 面向对象技术小结 2.3 Oracle8一瞥 2.3.1 Oracle8的聚焦区 2.3.2 Oracle8备份和恢复 2.4 Oracle8的对象和新数据库对象 2.4.1 嵌套对象 2.4.2 可变数...

    数据库 ORACLE_8_初学者指南1.rar

    2.2.4 数据库触发器 2.2.5 可扩充性 2.2.6 继承 2.2.7 多态 2.2.8 面向对象技术小结 2.3 Oracle8一瞥 2.3.1 Oracle8的聚焦区 2.3.2 Oracle8备份和恢复 2.4 Oracle8的对象和新数据库对象 2.4.1 嵌套对象 2.4.2 可变数...

    Oracle11g从入门到精通

     Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。  全书结构合理、内容翔实、示例丰富...

    Oracle数据库课程设计报告(1).doc

    设计环境 1.Windows7旗舰版32位 2.Microsoft Visual Studio 2005 3.Oracle 11g 第2章 概要设计 2.1系统需求分析 图书管理系统主要是用oracle数据库进行逻辑处理,实现对图书信息的增删改查,以 及出库入库的管理。...

    21天学通Oracle

    1.1.3 Oracle数据库的特点 24 1.2 安装Oracle数据库 25 1.2.1 Oracle数据库的版本变迁及安装环境 25 1.2.2 安装过程 26 1.2.3 安装中需要注意的问题 27 1.3 本章小结 28 1.4 习题 28 第2章 Oracle常用工具...

    《Oracle Database 11g &amp; MySQL 5.6开发手册

    1.4 小结22 1.5 习题23 第2章 客户端接口25 2.1 SQL*Plus 26 2.1.1 与SQL*Plus连接和 断开连接 26 2.1.2 在SQL*Plus环境下 工作 30 2.1.3 在SQL*Plus中编写 SQL语句34 2.1.4 用SQL*Plus保存 SQL语句36 2.1.5 用SQL*...

    Oracle11g从入门到精通2

     Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。  全书结构合理、内容翔实、示例丰富...

    Oracle 从入门到精通视频教程(11G版本)(ppt)

    本章小结 http://down.51cto.com/data/376692 第20章-在线考试系统数据库设计 在线考试系统需求 模块设计 本章小结 第21章-在.NET中连接Oracle 什么是ADO.NET 使用绑定的方式连接Oracle 使用写代码的方式连接...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    3.4.2 Oracle数据库中的存储层次体系 87 3.4.3 字典管理和本地管理的表空间 91 3.5 临时文件 93 3.6 控制文件 95 3.7 重做日志文件 95 3.7.1 在线重做日志 96 3.7.2 归档重做日志 98 3.8 密码文件 100 3.9 ...

    Oracle.11g.从入门到精通 (2/2)

    1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 数据模型 1.2.6 数据完整...

    Oracle.11g.从入门到精通 (1/2)

    1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 数据模型 1.2.6 数据完整...

    oracle10g课堂练习I(2)

    小结 1-24 2 安装 Oracle 数据库软件 课程目标 2-2 Oracle 数据库管理员的任务 2-3 用于管理 Oracle 数据库的工具 2-4 安装:系统要求 2-6 检查系统要求 2-7 灵活体系结构 (OFA) 2-8 使用灵活体系结构 2-9...

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

     《Oracle11g宝典》是Oracle数据库管理员、安全管理员、网络管理员、应用开发人员的参考指南,还是Oracle技术支持和培训机构、Oracle学习班、高等院校计算机专业数据库课程的参考教材和上机指导教材。每类人员都...

    基于Web的学生成绩网上查询系统 oracle课程设计

    本人亲自书写的oracle课程设计,发布出来方便大家。 第一节 概述 3 1、课题名称 3 2、背景说明 3 3、编写目的 3 4、开发环境 3 第二节 需求分析 4 1、分析的重要性 4 ...第八节 课程设计小结 19 附言 20

    精通sql结构化查询语句

    小结第2篇 数据库管理篇第3章 数据库的相关操作 3.1 创建数据库 3.1.1 SQL标准中创建数据库的语法 3.1.2 使用SQL语句创建数据库 3.2 删除数据库 3.2.1 SQL标准中删除数据库的语法 3.2.2 使用SQL语句删除数据库 3.3 ...

    ORACLE9i_优化设计与系统调整

    §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §...

    Oracle_Database_11g完全参考手册.part2/3

    Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,2002年他被Oracle Magazine提名为年度顾问。他的畅销书包括《Oracle Database 11gDBA手册》、Oracle ...

Global site tag (gtag.js) - Google Analytics