`
gaogengzhi
  • 浏览: 107329 次
  • 性别: 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 



分享到:
评论

相关推荐

    Orcal 数据库触发器文件

    Oracle数据库触发器是数据库管理系统中的一种重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE、DELETE)之前或之后执行自定义的SQL代码或PL/SQL块。这些代码可以用来实现业务规则、数据验证、审计跟踪等...

    数据库,oracle机制,Oracle数据库机制

    ### 小结 通过以上内容的介绍,我们可以看到Oracle数据库机制涉及到了多个方面,包括重做日志的管理和利用、归档模式的选择、实例恢复机制以及权限与角色的管理等。这些机制共同作用,确保了Oracle数据库的高度可靠...

    Oracle数据库课程设计.doc

    最后,课程小结回顾了整个设计过程,强调了实践中学习到的知识点和经验,为学生提供了宝贵的实践经验。 综上所述,这份Oracle数据库课程设计报告全面覆盖了数据库设计的各个环节,结合实际案例——学生成绩管理系统...

    oracle触发器

    ### 小结 Oracle触发器是数据库开发和管理中的重要工具,它们能够自动化执行任务,简化数据库维护工作,提高数据一致性。熟练掌握触发器的使用不仅能够提升数据库应用的性能,还能增强系统的安全性和可靠性。然而,...

    oracle 数据库实例教程 第8讲.ppt

    **8.8 本章小结** 本章介绍了Oracle数据库中存储过程和触发器的使用,强调了它们在数据库管理和应用程序开发中的重要性。通过学习这些概念,开发者能够创建更加灵活和高效的数据库解决方案,同时提高系统的安全性和...

    Oracle 触发器的使用小结

    Oracle触发器是数据库对象,主要用于在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的PL/SQL代码。它们是数据库级别的触发,可以用来实施业务规则、保持数据完整性或进行复杂的逻辑处理。以下...

    定时备份oracle数据库方法

    #### 小结 通过上述步骤,您可以成功地设置Oracle数据库的定时备份。这种备份方式不仅操作简单,而且能够有效地保障数据的安全性。此外,根据实际需求,您还可以进一步优化备份策略,例如增加增量备份、压缩备份...

    Oracle数据库课程设计报告.pdf

    - 完成报告:报告需符合指定格式,包括引言、概要设计、详细设计、调试与运行结果及课程设计小结,且正文不少于4000字。 3. 设计环境 - 操作系统:Windows7 旗舰版 32 位 - 开发工具:Microsoft Visual Studio 2005...

    数据库 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 可变数...

    韩顺平最新Oracle笔记及PPT

    1. **《韩顺平.oracle实用教程.pdf》**:这可能是一份全面的Oracle教程,包含Oracle数据库的基本概念、数据类型、SQL语言、表的创建与管理、索引、视图、存储过程、触发器等实用内容,帮助初学者快速入门。...

    Java企业数据库Oracle应用研讨.docx

    #### 小结 通过本课程的学习,学员不仅能掌握Oracle数据库的基本操作和管理技能,还能深入了解其高级特性,为将来从事相关领域的工作打下坚实的基础。Oracle数据库因其强大的功能和广泛的应用场景,在IT行业中占据...

    oracle序列和触发器的建立

    在Oracle数据库中,序列是一种自动产生数值的对象,常用于为主键字段提供唯一值。序列主要用于实现表中的自增ID功能,例如,当用户需要为某张表的主键设置自增长时,就可以通过创建一个序列来实现这一需求。 ##### ...

    Oracle课程小结.docx

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统,其强大的功能和灵活性使其成为企业级数据存储和管理的核心工具。在Oracle课程学习中,我们主要关注了几个关键概念:DUAL表、NULL值处理以及函数的使用。...

    《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数据库的概念、管理和应用开发等内容。  全书结构合理、内容翔实、示例丰富...

Global site tag (gtag.js) - Google Analytics